module.exports vs exports

发布时间:2019-07-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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,请注明来意。
标签: