Bea*_*red 7 javascript node.js express read-eval-print-loop
我正在深入研究NodeJS和Express(对我来说太复杂了)来构建一个实时的Web应用程序.目前,我正在尝试了解如何在服务器端使用现有的JavaScript库.问题是库似乎被设计为在客户端运行,因此,说明只显示如何在客户端使用它.我正在谈论的图书馆可以在这里找到......
https://github.com/replit/jsrepl
问题:
意思是,在服务器端,我可以执行以下代码......
var jsrepl = new JSREPL({
input: inputCallback,
output: outputCallback,
result: resultCallback,
error: errorCallback,
progress: progressCallback,
timeout: {
time: 30000,
callback: timeoutCallback
}
});
Run Code Online (Sandbox Code Playgroud)
提前感谢您的所有智慧!我正在尽我所能去理解这一切.
所以这是可能的,但你需要一些严肃的hackery来使它工作.由于这不是一个节点模块,并且正如其他人所指出的那样是从浏览器中编写的,因此您需要在节点内使用DOM来执行它.幸运的是,我们有一个精彩的jsdom项目,它允许我们做到这一点.所以让我们设置这个东西吧.
cd 进入您的节点项目(如果没有已创建一个项目,请创建一个)git clone git://github.com/replit/jsrepl.gitjsrepl并初始化子模块git submodule update --init --recursivenpm install coffee-script和npm install uglify-js依赖项中.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)
}
Run Code Online (Sandbox Code Playgroud)
这是JSREPL进入其工作地点所需的最少代码量.我们在这里所做的只是需要jsdom并实例化它,直接从文件中读取jsrepl源代码.如果你用node filename它运行这个文件会注销你的JSREPL对象,它可以像在浏览器中一样使用:)
jsrepl自己一起工作过,但假设它与平台无关,require()从节点模块中获取它应该没问题。然而,相关脚本中似乎有一些特定于 DOM 的内容(例如document.getElementById),表明并非如此。