CommonJs和ES6的模块加载的区别

在CommonJs中,通过exportsmodule.exports来导出模块中的内容,通过require来导入
在ES6中,通过exportexport default来导出模块中的内容,通过import来导入

他们的主要区别有:

CommonJS中,对于导入的数据,如果是原始类型的数据,是进行了复制,对其进行更改不会影响到被导入模块中的数据;而引用数据类型的数据,只是进行了浅拷贝,对其进行更改会影响到被导入模块中的数据;
CommonJS中,在导入模块时,就整个执行了代码;
CommonJS中,在同模块中多次导入,只会执行一次代码,后面的都是使用缓存,除非清了缓存;
CommonJS中,循环模块加载时,只会输出已执行的部分,未执行的不会被输出

ES6中,属于【动态只读引用】;
动态是指,当原始值发生变化时,import的数据也会改变。无论什么数据类型;
只读是指,import的数据不可更改,import时只是生成一个对原始值的只读引用,当执行到时,才去被加载的模块中取值;
在循环加载中,只要两个模块中存在某种引用,模块就会被执行。

posted @ 2020-10-23 09:41  ashen1999  阅读(161)  评论(0编辑  收藏  举报