如何导入非node.js文件?

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

2个答案…

1)JSON对象内build在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

如果你相信代码(我的意思是真的相信代码),那么你可以eval它:

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

我不会推荐用远程代码来做这件事(因为它可能会在你不知情的情况下改变),但是如果你有本地的东西,那应该没问题。

编写包装或更改代码。

什么应该自动使其工作? 节点应该怎么知道哪些函数应该被导出?

你所能做的只是调整代码以匹配Common JS标准,但是在这之前,请检查Node.js Wiki上的API文档和模块页面 ,看看是否有人已经为你做了这个工作:)

如果你自己编写的代码应该在浏览器和Node.js中工作,你可以使用如下的包装器:

 (function(node) { // Your Awesome code here if (node) { exports.foo = ... } else { window.foo = ... } })((function(){return ('' + this).slice(8, -1) !== 'DOMWindow';})());