module.export与exports的区别

node.js在执行的时候会被包裹一个函数,这个函数在括号里面

// (
//     function (exports,require,module,_filename,_dirname) {
//         ////////真正写的代码都在这里面,,,,,,,,
//     }
// )

const  exports= module.exports; 
1. exports只是module.exports的快捷方式


在08_exps.js里写入
//     exports.test = 100;
//意思就是直接输出一个test变量,

在main 里引入

const mod=require('./08_exps');
console.log(mod.test);

在cmd 输出 F:\nodeFile\part1>node 08_main.js
100

 

但是在08_export.js里如果这么写的话,exports就是一个对象,和module.exports没有啥关系了,比如:

exports = {
    a:1,
    b:2,
    test:100
};

在输出里是拿不到test的值得.

这时要加上  module.

module.exports = {
    a:1,
    b:2,
    test:100
};

那么他们之间的关系简单的概括为:exports会默认设置为module.exports的快捷方式,可以往里面添加属性( exports.test ),但是不可以修改它的指向,修改了他的指向,他就和普通的对象没有啥差别,因为在common.js里模块对外输出永远是module.exports,如果exports改变了指向之后,就会不在生效了.

 

你可能感兴趣的:(node)