繁体   English   中英

如何从所需的节点文件正确导出

[英]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)如果没有功能被分配到exportsmodule.exports ,为什么他们都需要在必须指出obj c)如果可以替代此中级exports ,目的是什么? 这两个对象的用例是什么?

如果可以替代此中级exports ,目的是什么?

exports最初设置的值module.exports ,可作为一种方便(和默认值),这样你就不必创建自己的对象,以出口价值。 您的示例基本上等同于仅使用:

exports.prop1 = "some value1";
exports.prop2 = "some value2"; 

如果没有功能被分配到exportsmodule.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.exportsexports指向同一对象,因此通过任一变量进行的更改均有效。

声明这个是否明智(看似多余的obj

有多种方法可以实现您想要的。 我在顶部显示了一个直接使用exports 你也可以写

module.exports = {
  prop1: "some value1",
  prop2: "some value2" 
};

使用对您有意义的任何东西,并遵守您遵循的样式准则。


最终,必须将要导出的值分配给module.exports 如何做到这一点是由你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM