Node 模块化规范阅读集合

这里的知识不太熟,找了些资料。但暂时还没理清他们的关系,就先全贴上来,看完再整理。

历史发展

各规范对比

  • nodejs 采用 CommonJS -> 服务端 动态引入,执行时引入 module.exports, require 输出值的传递,运行时加载
  • AMD -> 浏览器 (requireJS) 提前执行 依赖前置
  • CMD(sea.js)-> 静态引入,编译时引入,因此必须放在最外层 延迟执行 依赖就近,CMD 与 CommonJS 不一样
  • UMD -> AMD 与 CommonJS 结合的结果,浏览器+服务器
  • ES6 Module -> 完全静态化 ,输出值的引用,编译时输出接口

官方规范

「万字进阶」深入浅出 Commonjs 和 Es Module - 掘金知乎

  1. Commonjs 和 Es Module 有什么区别 ?
  2. Commonjs 如何解决的循环引用问题 ?
  3. 既然有了 exports,为何又出了 module.exports ? 既生瑜,何生亮 ?
  4. require 模块查找机制 ?
  5. Es Module 如何解决循环引用问题 ?
  6. exports = {} 这种写法为何无效 ?
  7. 关于 import() 的动态引入 ?
  8. Es Module 如何改变模块下的私有变量 ?

先看这个