总结
require用来加载代码,而exports和module.exports则用来导出代码。
首先我们先来看一下js基础。
test.js1
2
3
4
5
6
7
8
9
10var a = {name:1};
var b = a;
console.log(a);
console.log(b);
b.name=2;
console.log(a);
console.log(b);
var b = {name:3};
console.log(a);
console.log(b);
运行test.js结果为:1
2
3
4
5
6{name:1}
{name:1}
{name:2}
{name:2}
{name:2}
{name:3}
解释:
a是一个对象,b是对a的引用,即a和b指向同一块内存,所以前两个输出一样。当对b作修改时,即a和b指向同一块内存地址的内容发生了改变,所以a也会体现出来,所以第三四个输出一样,当b被覆盖时,b指向了一块新的内存,a还是指向原来的内存,所以最后两个输出不一样。
明白了上述例子,我们只需知道三点就知道exports和module.exports的区别了: