当前位置: 首页 > 后端技术 > Node.js

ES6模块化和CommonJS模块化的区别

时间:2023-04-03 12:16:19 Node.js

ES6模块化和CommonJS模块化的区别最近的项目中,对CommonJS中ES6的import、export和module.exports和require的使用感到困惑,所以今天下定决心总结一下up,如果有什么不对的地方,请多多指教。ES6modularimport命令用于导入其他模块提供的功能;export命令用于指定模块的对外接口。1.导入导出//exporta.js/**写1**/varname='sheep'functiongetSheep(){name='hourse'}export{getSheep}//引入b.jsimport{getSheep}from'./a.js'/**方式2**/varname='sheep'exportfunctiongetSheep(){name='hourse'}//importb.jsimport{getSheep}from'./a.js'2.import和exportdefalutexport可以有多个,但是exportdefault只能有一个//exporta.jsletobj={name:'hello',getName:function(){returnthis.name}exportdefaultobj//importb.jsimportobjfrom'./a.js'CommonJS模块化1.require和module.exportsrequire都支持ES6(bable将import转换为require)和CommonJS//exporta.jsletobj={name:'hello',getName:function(){returnthis.name}module.exports=obj//引入b.jsletobj=require('./a.js')总结即使我们使用ES6的模块系统,如果我们使用Babel的转换,ES6的模块系统也会最终被转化为CommonJS规范。在Babel5中使用require时,导入的值是module.export返回的值或者exportdefault返回的值。在Babel6中,使用import导入时,可以直接获取exportdefault的值;但是如果是require导入的组件,不管导出的是module.export、export还是exportdefault,都可以直接获取到exportdefault的值。您必须添加默认值。参考资料:https://www.jianshu.com/p/27e...https://juejin.im/post/5a2e5f...