有没有人使用现有的node.js REPL为自己设置了类似的东西?我没有想出一个快速的方法来做这件事。
我现在的方法是使用emacs和这个:https://github.com/ivan4th/swank-js
本模块由以下部分组成:
我的解决方案在emacs端使用SLIME-js,我需要(‘swank- js')我的app.js文件
现在.。关于我的解决方案或其他可能的解决方案,我有几个问题和问题:
Q1:这是不是有点过头了?有没有人有一种秘密的方法,可以将nano中的东西计算到他的活动过程中?
Q2:我必须改变swank-js是EVALing的方式。它使用了某种像这样的黑魔法:
var Script = process.binding('evals').Script;
var evalcx = Script.runInContext;
....
this.context = Script.createContext();
for (var i in global) this.context[i] = global[i];
this.context.module = module;
this.context.require = require;
...
r = evalcx("CODECODE", this.context, "repl");
据我所知,它只是将全局变量复制到新的上下文中,并且在eval时,不会更改原始函数定义- SOOO..我只是使用简单的"eval“,它是有效的。
你对此有何评论?
Q3:为了重新计算一个函数,它需要是一个全局函数--让所有的函数定义都是全局的(类似clojure)是不是不好的做法?你认为还有其他方法吗?
发布于 2012-03-06 03:57:13
实际上,swank.js正在变得更好,现在使用NPM在你的项目中设置swank js要容易得多。我现在正在编写文档,但是功能已经存在了!
发布于 2012-05-30 19:35:09
请查看此http://nodejs.org/api/vm.html
var util = require('util'),
vm = require('vm'),
sandbox = {
animal: 'cat',
count: 2
};
vm.runInNewContext('count += 1; name = "kitty"', sandbox, 'myfile.vm');
console.log(util.inspect(sandbox));
// { animal: 'cat', count: 3, name: 'kitty' }
应该对您有很大帮助,node的所有沙箱都使用它:)但是您可以直接使用它:)
发布于 2011-03-30 12:03:39
您可能会看到jsapp.us,它在沙箱中运行JS,然后将其作为一个快速的小型测试服务器向世界公开。这是jsapp.us github repo。
此外,请停在#node.js上并提出问题,以获得更快的响应:)
https://stackoverflow.com/questions/4847103
复制相似问题