node.js 导出模块的两种方式 exports module.exports

  • Post author:
  • Post category:其他




导出模块的两种方式

参考

https://nodejs.org/api/modules.html#modules_exports_shortcut

  • exports
  • module.exports
// 定义方法,常量
const myPI = 3.14
const add = (a,b) => a + b;

// 导出,两种方法任意都可以
// 方法一:
exports.myPI = myPI
exports.add = add

// 方法二:
module.exports.myPI = myPI
module.exports.add = add

// 方法二(变形)
module.exports  = {
    myPI,
    add
}

在阅读其它人的代码时,可能会遇到这两种不同的写法。所以我们还是有必要了解一下的。

cookie模块,body-parser模块,arry-flatten模块中的导出均采用不同的方式。

两个对象的关系


  • 初始


    exports



    module.exports

    是指向

    同一块内存区域

    ,其内容都是一个空对象。(exports是module.exports的别名)即:
  exports === module.exports // 输出是 true

所以下面两种写法的效果是一样的:

 //1 mymodule.js
 exports.f = function(){ }
 exports.pi = 3.1415926

 //2 mymodule.js
 module.exports.f = function(){ }
 module.exports.pi = 3.1415926
  • 在定义模块时:

    如果直接给

    exports

    对象赋值(例如:exports={a:1,b:2}),此时,

    exports

    就不会再指向

    module.exports

    ,而转而

    指向这个新对象

    ,此时,

    exports



    module.exports

    不是同一个对象。


在引入某模块时:以该模块代码中

module.exports

指向的内容为准。

图示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



结论


在导出模块过程中,建议只用一种方式(建议直接使用module.exports)



版权声明:本文为qq_43157612原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。