CommonJS、CMD、 AMD 、ES6?

学习ES6Module部分的生活看到阮一峰老师提到CommonJS 和 AMD 模块——ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。

CommonJS, AMD, CMD是规范, 理念 ;[1][2]

  • CommonJS规范,加载模块是同步的
    module.exports或exportsreuqire。require(module)
    Node.js采用CommonJS规范。
    Node.js主要用于服务器编程,模块一般存在本地硬盘中,加载较快。
    tips: Webpack官方推荐使用CommonJs规范,但是也支持CMD、AMD、ES6模块[2]

  • AMD、CMD 规范,模块加载是异步的
    require.js采用AMD(Asynchronous Module Definition 异步模块定义),使用define方法定义模块,require方法加载模块;require([module],callback)
    sea.js采用CMD(通用模块定义)
    浏览器环境,模块加载时间取决于网络情况,
    AMD和CMD最大的区别是: 对依赖模块的执行时机处理不同(注意不是加载的时机)
    很多人说, requireJS是异步加载模块,SeaJS是同步加载模块,这么说实际上是不准确的 ;
    二者加载模块都是异步的 ;
    只不过AMD依赖前置,可以方便知道依赖了哪些模块,然后马上加载 , 在加载完成后, 就会执行该模块;
    而CMD推崇就近依赖,把模块变为字符串解析一遍, 找到依赖了哪些模块, 在加载模块完成后, 不立刻执行, 而是等到require后再执行;
    上面只说了异步相关的概念, 其实 require.js / sea.js , 最重要的还是模块化。
    模块化降低耦合,依赖清晰,让调试, 加功能, 任务分配和交接都更方便[1]

  • ES6
    export、import


  1. 对CommonJS,AMD,CMD规范以及script标签异步加载的理解

  2. 理解CommonJs、AMD、CMD、ES6模块

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容