一、区别
- CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。
- CommonJS 模块的require()是同步加载模块,ES6模块的import命令是异步加载,有一个独立的模块依赖的解析阶段。
- CommonJS 是对模块的浅拷贝,ES6 Module是对模块的引用,即ES6 Module 只存之读,不能改变其值,具体点就是指针指向不能变,类似const。
- import 的接口是read-only(只读状态),不能修改其变量值。即不能修改其变量的指针指向,但可以改变变量内部指针指向。可以对CommonJS 重新赋值(改变指针指向),但是对ES6 Module 赋值会编译报错。
二、共同点
- CommonJS 和 ES6 Module 都可以对引入的对象进行赋值,即对对象内部属性的值进行改变。