天天看点

exports,module.exports和export,export default

首先要说的是上面的四个东西可以分成两类,前的两exports,module.exports一组后面的一组,因为他们是来自不同的模块规范的。

exports,module.exports:

CommonJs模块规范:

Node应用模块组成,采用的就是CommonJS的模块规范,每一个文件就是一个模块,module变量代表当前的模块,这个变量为一个对象,他的exports属性(module.exports)为一个对外的接口,在这个规范中exports和module.exports负责导出,require是引入的,对于module.exports初始值是一个空的对象,exports是指向module.exports的引用的。require返回的是module.exports的引用,他是不会看到exports的。(the exports variable that is available within a module starts as a reference to module exports)如果你让module.exports=XXX了记得之后还要让exports=module.exports这样才不会让两者断了联系。就相当于是 :

var a ={aa:1} ;var b=a; console.log(a);console.log(b);b.aa=2; console.log(a);console.log(b);b={aa:3};console.log(a);console.log(b);
           

上面的例子是112223,这里面的a和b是和exports和module.exports是一个意思的。

所以说对于exports对象上你可以添加方法,但是不可以直接的将exports变量指向谁,不然他们可就没关联了。

export,export default:

ES6模块规范:

对于后一组来说是用的es6的模块规范,export,import用来导出和导入。

export是规定对外接口的,所以说要和模块内部的变量一一的建立联系对应关系,而export default就是默认输出。

就是来源不同啦~~~

真是好久不写

继续阅读