我正在研究 NodeJS 和 Express(这对我来说太复杂了)来构建一个实时网络应用程序。目前,我正在尝试了解如何在服务器端使用现有的 javascript 库。问题是该库似乎设计为在客户端运行,因此,说明仅向您展示如何在客户端使用它。我正在谈论的图书馆可以在这里找到...
https://github.com/replit/jsrepl
问题:
- 既然 NodeJS 网络应用是基于 javascript 构建的,那么可以说我可以在服务器端运行任何非图形用户界面的 javascript 库吗?
- 任何人都可以提供一些指导,说明如何将该 jsrepl 库添加到我的 Express 3.0 应用程序中,使我能够像在客户端浏览器中使用它一样使用它吗?我是否必须修改 jsrepl 代码并添加“导出”。我想使用的方法?
也就是说,在服务器端,我可以执行下面的代码...
var jsrepl = new JSREPL({
input: inputCallback,
output: outputCallback,
result: resultCallback,
error: errorCallback,
progress: progressCallback,
timeout: {
time: 30000,
callback: timeoutCallback
}
});
提前感谢您的智慧!我正在尽力理解这一切。
最佳答案
所以这是可能的,但你需要一些严肃的黑客才能让它工作。由于这不是 Node 模块,并且正如其他人所指出的那样是从浏览器编写的,因此您需要 Node 内的 DOM 来执行它。幸运的是,我们有精彩jsdom让我们能够做到这一点的项目。那么让我们设置一下吧。
cd
进入您的 Node 项目(如果还没有,请创建一个)- 克隆 jsrepl 仓库
git clone git://github.com/replit/jsrepl.git
- cd 进入
jsrepl
并初始化子模块git submodule update --init --recursive
- 仍然在文件夹中,运行
npm install coffee-script
和npm install uglify-js
,这些依赖项在 repo 中的任何地方都没有提到(呃)。< - 确保安装了 java 并运行
cake bake
。经过漫长的 java 文件编译过程后,命令将完成,jsrepl 将构建并准备就绪。 - 运行
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
对象,它可以像在浏览器中一样使用:)
关于javascript - 当 NodeJS 应用程序设计为在客户端上运行时,如何在它的服务器端使用 javascript 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16501160/