脚本宝典收集整理的这篇文章主要介绍了module.exports vs exports,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
source code
function Module(id, parent) {
this.id = id;
this.exports = {};
this.parent = parent;
if (parent && parent.children) {
parent.children.push(this);
}
this.filename = null;
this.loaded = false;
this.children = [];
}
Default
index.js
console.log(module)
Module {
id: '.',
exports: {},
parent: null,
filename: '/home/joes/Demo/tests/index.js',
loaded: false,
children: [],
paths:
[ '/home/joes/Demo/tests/node_modules',
'/home/joes/Demo/node_modules',
'/home/joes/node_modules',
'/home/node_modules',
'/node_modules' ] }
Add module
file1.js
module.exports = function fn() {};
index.js
var file1 = require('./file1.js')
console.log(module)
Module {
id: '.',
exports: {},
parent: null,
filename: '/home/joes/Demo/tests/index.js',
loaded: false,
children:
[ Module {
id: '/home/joes/Demo/tests/file1.js',
exports: [Function],
parent: [Circular],
filename: '/home/joes/Demo/tests/file1.js',
loaded: true,
children: [],
paths: [Object] } ],
paths:
[ '/home/joes/Demo/tests/node_modules',
'/home/joes/Demo/node_modules',
'/home/joes/node_modules',
'/home/node_modules',
'/node_modules' ] }
我们时常会在模块源码中看到
exports = module.exports = {};
此时二者指向同一个对象。如果export.a = 1;
此时
exports = module.exports = {a: 1}
如果使用exports = function() {};
并没有导出module,exports
指向了新的对象,module.exports还是指向原始的对象。又因为module.exports
对象是要传给require
函数的,所以之后的改变并不会实际导出到外面。
Links
http://www.hacksparrow.com/node-js-exports-vs-module-exports.html
http://stackoverflow.com/questions/7137397/module-exports-vs-exports-in-node-js
以上是脚本宝典为你收集整理的module.exports vs exports全部内容,希望文章能够帮你解决module.exports vs exports所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。