Common JS和ES Module的区别
CommonJS 和 ES Module(ECMAScript Modules)是 JavaScript 中两种主流的模块化方案;
从语法,加载机制,运行时差异等方面去讲;
一:Common JS
1,require导入,module.exports导出,
2,支持动态导入require()可在代码任意位置,是同步加载(运行时加载)
例如图片的导入
3,执行机制是代码运行时按需加载,主要用于Node.js
4,导出的是值的拷贝,导出后与原模块解耦。
5,循环依赖处理方面:因为是同步加载,导致可能加载到未完全初始化的模块
二:ES Module
1,import导入,export导出
2,支持动态导入import()方法,返回的是Promise
3,静态加载,编译时解析依赖,解析时确认依赖关系
4,支持Tree Shaking(树摇),利用打包工具优化未使用的代码
5,导出的是值的引用,修改原模块会同步到导入处
6,循环依赖处理方面,在编译解析时静态分析解决了循环依赖