ES6 模块加载与 CommonJS 模块加载的原理
chenpeng 2020-11-30 ES6模块化
# 1.ES6 模块加载原理
ES6 模块是对导出的变量、方法是动态引用,遇到模块加载命令 import 时不会去执行模块,只是生成一个被加载模块的引用,需要开发者保证真正取值时能够取到值,只要引用存在,代码就能运行
# 2.CommonJS 模块加载原理
CommonJS 模块就是一个脚本文件,require 命令第一次加载该脚本时会执行整个脚本,然后在内存中生成该模块的一个说明对象
{
id: '', //模块名,唯一
exports: { //模块输出的各个接口
...
},
loaded: true, //模块的脚本是否执行完毕
...
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
以后用到这个模块时,就会到对象的 exports 属性中取值。即使再次执行 require 命令,也不会再次执行该模块,而是到缓存中取值