如何导入非node.js文件?

时间:2011-01-11 21:26:33

标签: javascript node.js

如何加载不符合node.js格式的外部js文件。我正在尝试导入json序列化库。我怎么能这样做?

3 个答案:

答案 0 :(得分:33)

2个答案......

1)JSON对象内置于node.js,因此您只需调用JSON.parse()和JSON.stringify(),就不需要为此特定情况导入外部代码。

2)要导入外部代码,node.js遵循CommonJS模块规范,你可以使用require()

所以,如果你有一个名为external.js的文件(与你的其余代码位于同一目录中):

this.hi = function(x){ console.log("hi " + x); }

从节点开始:

var foo = require("./external");
foo.hi("there");

您将看到输出hi there

答案 1 :(得分:10)

如果您信任该代码(我的意思是,真的信任该代码),那么您可以eval

eval(require('fs').readFileSync('somefile.js', 'utf8')); 

我不建议使用远程代码执行此操作(因为它可能会在您不知情的情况下进行更改)但如果您有本地副本,则应该没问题。

答案 2 :(得分:3)

编写包装器或更改代码。

什么应该自动使它工作? Node如何知道应该导出哪些函数?

您所能做的就是调整代码以匹配Common JS标准,但在此之前,请检查Node.js Wiki上的API DocsModules Pages,看看是否有人已经为你完成了这项工作:)

如果您自己编写应该在Browser和Node.js中运行的代码,您可以使用如下所示的包装器:

(function(node) {
    // Your Awesome code here
    if (node) {
        exports.foo = ...

    } else {
        window.foo = ...
    }

})((function(){return ('' + this).slice(8, -1) !== 'DOMWindow';})());