如何导入非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';})());