首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在可以访问本地变量的node.js中加载和执行外部js文件?

在可以访问本地变量的node.js中加载和执行外部js文件?
EN

Stack Overflow用户
提问于 2010-12-19 08:47:20
回答 5查看 216K关注 0票数 145

在node.js中执行简单的include('./path/to/file')类型的命令容易吗?

我所要做的就是访问本地变量并运行脚本。人们通常如何组织比简单的hello world更大的node.js项目?(一个全功能的动态网站)

例如,我希望有这样的目录:

/models

/views

..。等

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-12-19 10:56:49

只需做一个require('./yourfile.js');

将您希望外部访问的所有变量声明为全局变量。因此,不是

var a = "hello"它将会是

GLOBAL.a="hello"或只是

a = "hello"

这显然很糟糕。您不希望污染全局范围。相反,建议的方法是export你的函数/变量。

如果您想要MVC模式,可以看看Geddy。

票数 144
EN

Stack Overflow用户

发布于 2010-12-20 00:02:55

您需要了解CommonJS,它是一种定义模块的模式。你不应该滥用全局作用域,这总是不好的事情,相反,你可以使用'exports‘标记,如下所示:

代码语言:javascript
复制
// 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;
};

以及将使用我们的模块的客户端代码:

代码语言:javascript
复制
// 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!)

票数 97
EN

Stack Overflow用户

发布于 2012-01-11 02:18:26

如果您正在为Node编写代码,那么按照Ivan描述的方式使用Node模块无疑是可行的。

但是,如果您需要加载已经编写的JavaScript,并且不知道节点,则可以使用vm模块(而且肯定比eval更可取)。

例如,下面是我的execfile模块,它在context或全局上下文中评估path上的脚本:

代码语言:javascript
复制
var vm = require("vm");
var fs = require("fs");
module.exports = function(path, context) {
  var data = fs.readFileSync(path);
  vm.runInNewContext(data, context, path);
}

还要注意:使用require(…)加载的模块不能访问全局上下文。

票数 66
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4481058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档