欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CommJs中的module.exports 和 exports 和 ES6 中的 export 和 export default 之间的区别

程序员文章站 2024-03-20 15:33:34
...

module.exports 和 exports

这两个是属于 Node.js中的导出模块的方法

module.exports

module.exports属性表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量。

exports

为了方便,Node为每个模块提供一个exports变量,指向module.exports。这等同在每个模块头部,有一行这样的命令 var exports= module.exports。

如果使用exports导出模块的话,只能为exports对象添加方法或者属性,不能将其重新赋值,重新赋值就会切断与module.exports的联系!! 如果给exports添加了属性或方法,module.exports也不能重新赋值,如果重新赋值,就改变了引用关系,之前和exports引用的关系改变了,所以exports加进去的方法也不会导出

exports.hello = 'hello';
module.exports = 'hello world';

这样做的话 exports 上加的属性加在了 module.exports 之前的引用对象上面,然后 module.exports 重新赋值了,就丢失了之前引用中的 hello 属性!!
如果一个模块的对外接口,就是一个单一的值,不能使用exports输出,只能使用module.exports输出

ES6 中的 export 和 export default

export (命名导出)

export 导出的模块 在导入的时候必须变量名与之一一对应。命名导出可以导出多个值,但是导入时命名需要与导出命名相同

//  module.js
let fn=function(){

...

};

let fn1=function(){

...

};

export {fn1,fn2};

// index.js

import {fn1, fn2} from 'module.js';

export default(默认导出)

只能有一个默认导出;导入时,可以使用任意命名导 默认导出的模块。
在一个模块中只能使用一次此方法导出。

相关标签: 导出模块