当 NodeJS 应用程序设计为在客户端上运行时,如何在它的服务器端使用 javascript 库?

2023-11-25

我正在深入研究 NodeJS 和 Express(这对我来说太复杂了)来构建一个实时 Web 应用程序。目前,我正在尝试了解如何在服务器端使用现有的 javascript 库。问题是该库似乎被设计为在客户端运行,因此说明仅向您展示如何在客户端使用它。我正在谈论的图书馆可以在这里找到......

https://github.com/replit/jsrepl

问题:

  1. 由于 NodeJS Web 应用程序是基于 javascript 构建的,所以可以公平地说我可以在服务器端运行任何非 gui javascript 库吗?
  2. 任何人都可以提供一些指导,告诉我如何将该 jsrepl 库添加到我的 Express 3.0 应用程序中,让我能够以与在浏览器客户端中使用它相同的方式使用它吗?我是否必须修改 jsrepl 代码并添加“exports.”我想使用的方法?

这意味着,在服务器端,我可以执行以下代码......

var jsrepl = new JSREPL({  
  input: inputCallback,  
  output: outputCallback,  
  result: resultCallback,  
  error: errorCallback,  
  progress: progressCallback,  
  timeout: {  
    time: 30000,  
    callback: timeoutCallback  
  }  
});  

预先感谢您的智慧!我正在尽力理解这一切。


所以这是可能的,但是你需要一些认真的黑客才能让它工作。由于这不是一个节点模块并且是从浏览器编写的,正如其他人所指出的,因此您需要节点内的 DOM 来执行它。幸运的是,我们还有精彩的jsdom项目使我们能够做到这一点。那么让我们来设置一下吧。

  • cd进入您的节点项目(如果还没有,则创建一个)
  • 克隆 jsrepl 存储库git clone git://github.com/replit/jsrepl.git
  • cd into jsrepl并初始化子模块git submodule update --init --recursive
  • 仍在文件夹中,运行npm install coffee-script and npm install uglify-js,仓库中任何地方都没有提到的依赖项(呃)。
  • 确保java已安装并运行cake bake。经过漫长的编译 java 文件等过程后,命令将完成,jsrepl 将被构建并准备好运行。
  • run npm install jsdom,然后我们可以开始编写示例文件

这是一个最小的例子:

var jsdom = require('jsdom'),
    fs = require('fs'),
    jsrepl = fs.readFileSync('./jsrepl/repl.js', 'utf8');

jsdom.env({
  html: "<script src='jsrepl.js' id='jsrepl-script'></script> ",
  src: [jsrepl],
  done: function(err, window){
    if (err) return console.error(err);
    run_jsrepl.call(window);
  }
});

function run_jsrepl(){
  console.log(this.JSREPL)
}

这是获得所需的最少代码量JSREPL到它工作的地方。我们在这里所做的就是需要 jsdom 并实例化它,直接从文件中读取 jsrepl 源代码。如果您运行此文件node filename它会注销你的JSREPL对象,可以像在浏览器中一样使用它:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 NodeJS 应用程序设计为在客户端上运行时,如何在它的服务器端使用 javascript 库? 的相关文章

随机推荐