JS中的两个规范 CMD和AMD

  最近在学习js的过程中看见两个新的东西,CMD和AMD,下面我们就来了解一下这两个东西是什么,有什么区别吧。


简单的介绍:

 CMD ( Common Module Definition ) 简单的说:通用模块定义。
 AMD( Asynchronous Module Definition ) 简单的说:异步模块定义。

我的理解:
 可以这么说,AMD 和 CMD是两种对模块化的不同规范,他们的不同主要体现在加载的js的处理机制不同,特别是对js中的依赖原则的不同。
  AMD推崇依赖前置 ,在定义模块的时候就要声明其依赖的模块。
  CMD推崇就近依赖 ,只有在用到某个模块的时候再去require。
  AMD依赖前置,js可以方便知道依赖模块是谁,立即加载,而CMD就近依赖,需要使用把模块变为字符串解析一遍才知道依赖了那些模块。对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。

别人家的解释:
下面是玉伯对于 AMD 与 CMD 区别的解释:(玉波:前淘宝UED,现支付宝前端工程师)
   AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。
   CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。

代码的体现:
// CMD
define ( function ( require ,  exports ,  module )  {
     var  a  =  require ( './a' )
    a . doSomething ( )
     // 此处略去 100 行
     var  b  =  require ( './b' )  // 依赖可以就近书写
    b . doSomething ( )
     // ...
} )
// AMD 默认推荐的是
define ( [ './a' ,  './b' ] ,  function ( a ,  b )  {  // 依赖必须一开始就写好
    a . doSomething ( )
     // 此处略去 100 行
    b . doSomething ( )
     // ...
} )

总结:
  所以,很多人说AMD用户体验好,因为没有延迟,依赖模块提前执行了,CMD性能好,因为只有用户需要的时候才执行。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值