如何导入非 node.js 文件?
Posted
技术标签:
【中文标题】如何导入非 node.js 文件?【英文标题】:How do you import non-node.js files? 【发布时间】:2011-06-07 11:09:08 【问题描述】:如何加载不符合 node.js 格式的外部 js 文件。我正在尝试导入 json 序列化库。我该怎么做?
【问题讨论】:
有对 json 的内置支持(例如 JSON.stringify(obj)),您是否正在寻找已经支持的功能集之外的东西? @david 仅供现在和将来参考。我不想找到所有东西的 node.js 版本。 绝对不要导入第二个 JSON 库(我假设您正在查看 json2.js?)。 JSON.parse() 和 JSON.stringify() 从一开始都内置在 node 中。 @Will03uk “不适合 node.js 格式”是什么意思? 【参考方案1】:编写包装器或更改代码。
什么应该自动使它工作? Node 应该如何知道哪些函数应该被导出?
您所能做的就是调整代码以匹配 Common JS 标准,但在此之前,请检查 Node.js Wiki 上的 API Docs 和 Modules Pages,看看是否有人已经完成了这项工作给你:)
如果您自己编写应该在浏览器和 Node.js 中工作的代码,您可以使用如下包装器:
(function(node)
// Your Awesome code here
if (node)
exports.foo = ...
else
window.foo = ...
)((function()return ('' + this).slice(8, -1) !== 'DOMWindow';)());
【讨论】:
【参考方案2】:如果你信任代码(我的意思是,真的信任代码)那么你可以eval
它:
eval(require('fs').readFileSync('somefile.js', 'utf8'));
我不建议使用远程代码执行此操作(因为它可能会在您不知情的情况下更改),但如果您有某个内容的本地副本,那应该没问题。
【讨论】:
这是一个可怕的答案。我喜欢它。 接受答案中的简单要求比读取 JSON 效果更好。如果 JSON 是一个配置文件,并且您想使用 webpack、背包等将它注入到您的 .js 文件中,这也是有益的。 如果它来自您已经信任的文件,就像您在执行require()
时一样信任【参考方案3】:
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
【讨论】:
以上是关于如何导入非 node.js 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)