美文网首页
CommonJS、CMD、 AMD 、ES6?

CommonJS、CMD、 AMD 、ES6?

作者: 维仔_411d | 来源:发表于2020-02-10 23:47 被阅读0次

    学习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模块

    相关文章

      网友评论

          本文标题:CommonJS、CMD、 AMD 、ES6?

          本文链接:https://www.haomeiwen.com/subject/ublzxhtx.html