本文共 846 字,大约阅读时间需要 2 分钟。
参考
// 定义方法,常量const myPI = 3.14const add = (a,b) => a + b;// 导出,两种方法任意都可以// 方法一:exports.myPI = myPIexports.add = add// 方法二:module.exports.myPI = myPImodule.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)
转载地址:http://ddca.baihongyu.com/