在node.js中执行简单的include('./path/to/file')
类型的命令容易吗?
我所要做的就是访问本地变量并运行脚本。人们通常如何组织比简单的hello world更大的node.js项目?(一个全功能的动态网站)
例如,我希望有这样的目录:
/models
/views
..。等
发布于 2010-12-19 10:56:49
只需做一个require('./yourfile.js');
将您希望外部访问的所有变量声明为全局变量。因此,不是
var a = "hello"
它将会是
GLOBAL.a="hello"
或只是
a = "hello"
这显然很糟糕。您不希望污染全局范围。相反,建议的方法是export
你的函数/变量。
如果您想要MVC模式,可以看看Geddy。
发布于 2010-12-20 00:02:55
您需要了解CommonJS,它是一种定义模块的模式。你不应该滥用全局作用域,这总是不好的事情,相反,你可以使用'exports‘标记,如下所示:
// circle.js
var PI = 3.14; // PI will not be accessible from outside this module
exports.area = function (r) {
return PI * r * r;
};
exports.circumference = function (r) {
return 2 * PI * r;
};
以及将使用我们的模块的客户端代码:
// client.js
var circle = require('./circle');
console.log( 'The area of a circle of radius 4 is '
+ circle.area(4));
以下代码摘自node.js文档API:
http://nodejs.org/docs/v0.3.2/api/modules.html
此外,如果你想使用Rails或Sinatra之类的东西,我推荐使用Express (我无法发布URL,真可惜Stack Overflow!)
发布于 2012-01-11 02:18:26
如果您正在为Node编写代码,那么按照Ivan描述的方式使用Node模块无疑是可行的。
但是,如果您需要加载已经编写的JavaScript,并且不知道节点,则可以使用vm
模块(而且肯定比eval
更可取)。
例如,下面是我的execfile
模块,它在context
或全局上下文中评估path
上的脚本:
var vm = require("vm");
var fs = require("fs");
module.exports = function(path, context) {
var data = fs.readFileSync(path);
vm.runInNewContext(data, context, path);
}
还要注意:使用require(…)
加载的模块不能访问全局上下文。
https://stackoverflow.com/questions/4481058
复制相似问题