当前位置:   article > 正文

Node.js模块的导出_nodejs导出模块

nodejs导出模块

Node.js中,module.exportsexports 是两种导出模块的方式,它们的作用是使得模块中的内容可以被其他模块引用和使用。

  1. module.exports:
    • module.exports 是一个指向当前模块所导出内容的对象的引用。你可以通过给 module.exports 赋值来导出一个对象、函数、类或者任何其他的JavaScript类型。
// example.js
module.exports = {
  foo: 'bar',
  baz: function() {
    console.log('baz');
  }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. exports:
    • exportsmodule.exports 的一个引用,它是一个特殊的变量,指向了 module.exports
// example.js
exports.foo = 'bar';
exports.baz = function() {
  console.log('baz');
};
  • 1
  • 2
  • 3
  • 4
  • 5

不要同时使用exports和module.exports

虽然 exportsmodule.exports 都可以用来导出内容,但是在同一个模块中不应该同时使用它们。因为在模块加载完成后,Node.js 会返回 module.exports 而不是 exports。如果你同时使用了它们,但只有其中一个被赋值,那么最终导出的内容只会是 module.exports 所指向的对象,而 exports 上的属性将被忽略。

// example.js
// 此处使用 exports 导出变量
exports.baz = function() {
  console.log('baz');
};
// 此处使用 module.exports 导出对象
module.exports = {
  foo: 'bar'
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

当在同一个模块中同时使用 module.exportsexports 时,只有 module.exports 的赋值会生效,而 exports 上的属性将被忽略。这可能会导致一些意想不到的结果。下面是一个示例来说明这一点:

// example.js
// 此处使用 module.exports 导出对象
module.exports = {
  foo: 'bar'
};

// 此处使用 exports 导出变量
exports.baz = function() {
  console.log('baz');
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在上面的例子中,module.exports 导出了一个对象 { foo: 'bar' },而 exports 导出了一个函数 baz。但是,由于最终模块导出的是 module.exports 所指向的对象,而不是 exports,所以 exports 上的属性不会被导出。

因此,在这个例子中,其他模块引入 example.js 后只能访问到 foo,而不能访问到 baz

正确的做法是要么只使用 module.exports,要么只使用 exports

不要直接给exports赋值

exports正确的用法是给他添加属性,如果直接赋值,将会导出空对象。

exports是module.export的一个引用。给exports添加属性就等于是给module.exports添加属性,直接给exports赋值,就改变了变量exports的指向,就是说exports不再是module.exports的引用。那么此时module.exports就是空对象。

// example.js
exports=123
  • 1
  • 2

导入example.js模块的文件,得到的是一个空对象。这是因为只有 module.exports 指向的对象才会被导出,而不是 exports

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/611375
推荐阅读
相关标签
  

闽ICP备14008679号