js 模块化
ESM
url 没有 IDE IntelliSense 支持?
可以重定向导出,但是不能使用重定向导出项
最大的特点就是静态化,在解析的时候确定模块的依赖关系以及输入输出的变量 // import 只能写在最前面
导出引用 // 使用 export default a; 时不是引用,export { a as default } 是引用
import() 动态加载模块,使用了 () 但是不从 Function.prototype 继承,类似 super()
module 中相对路径是基于 script 路径的,相对于 module 需要使用 import.meta.url (import 也不是对象)(相当于 nodejs 的 __filename)(非模块脚本使用 document.currentScript)
System.import() ???
// nodejs 中,后缀 .mjs,为了兼容 CommonJS 的模块
文件路径需要写全,包括扩展名 // 因为可能不是本地环境
ES6 模块不会缓存运行结果,而是动态地去被加载的模块取值,以及变量总是绑定其所在的模块,只是代码引用
ES6 处理"循环加载"与 CommonJS(缓存返回)有本质的不同。ES6根本不会关心是否发生了"循环加载",只是生成一个指向被加载模块的引用(没加载完即为undefined),需要开发者自己保证真正取值的时候能够取到值。
// CommonJs 循环加载模块返回空对象 {}; // exports = {}