[英]How to properly export from required node file
我一直在阅读有关Node的require
以及当module.exports
中声明了数据或功能时如何自动覆盖 Node的exports
。 因此,让我看看我是否理解正确:我在导出文件中放入的所有内容都将包含在需要该文件的文件中。
我继承了一些节点文件,一个继承有require
堆的主文件,每个继承的文件具有以下结构:
var obj = {};
obj.prop1 = "some value1";
obj.prop2 = "some value2";
module.exports = exports = obj;
这是在所需文件中导出数据的标准方法吗? 声明a(似乎是多余的obj
)是否明智? ,B)如果没有功能被分配到exports
或module.exports
,为什么他们都需要在必须指出obj
? c)如果可以替代此中级exports
,目的是什么? 这两个对象的用例是什么?
如果可以替代此中级
exports
,目的是什么?
exports
最初设置的值module.exports
,可作为一种方便(和默认值),这样你就不必创建自己的对象,以出口价值。 您的示例基本上等同于仅使用:
exports.prop1 = "some value1";
exports.prop2 = "some value2";
如果没有功能被分配到
exports
或module.exports
,为什么他们都需要在必须指出obj
如果要从模块导出obj
,则必须将其分配给module.exports
。 这就是Node知道required
模块时要返回哪个值的方式。
分配exports
并不是真正必要的,但是可以防止出现诸如
module.exports = {foo: 42};
// now `module.exports` and `exports` point to different objects
// the following export is just "lost" (ignored)
exports.bar = 21;
赋值( module.exports = exports = ...
)可确保module.exports
和exports
指向同一对象,因此通过任一变量进行的更改均有效。
声明这个是否明智(看似多余的
obj
)
有多种方法可以实现您想要的。 我在顶部显示了一个直接使用exports
。 你也可以写
module.exports = {
prop1: "some value1",
prop2: "some value2"
};
使用对您有意义的任何东西,并遵守您遵循的样式准则。
最终,必须将要导出的值分配给module.exports
。 如何做到这一点是由你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.