AMD 和 CMD 原理 以及CommonJS

本文对比分析了AMD(异步模块定义)和CMD(Common Module Definition)两种JavaScript模块化方式的区别。AMD推崇依赖前置,提高了加载性能但增加了开发者的工作量;CMD推崇依赖就近,提升了开发便利性却牺牲了一定的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

观摩了各位神级人物的文章,个人总结下AMD 以及CMD的区别

AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"

AMD 推崇的是依赖前置,在解析和执行模块之前,开发者必须指明所有要依赖的模块,因此也无需遍历所有的依赖模块,从而提高性能,but 对于开发者的工作任务量就加大了,写到100行后,发现需要依赖一个模块,在去增加.

有两个Javascript库实现了AMD规范:require.jscurl.js

RequireJS就是实现了AMD规范的呢。

代码结构

define(['a','b'],function(a,b){
   a.doSomething();
   b.doSomething();

})

CMD推崇的是依赖就近原则,可以把依赖写在任何一行代码处

代码结构

define(function(require,export,module){
  var a = require('a');
  a.doSomething();
  var b = require('b')
  b.doSomething();
})

代码运行时,需要遍历所有的require,找到后面的依赖,做法是通过function toString(),正则匹配require关键字,找到后面的依赖,显然是牺牲性能来换取开发便利的方法.

上面讲的是硬依赖(肯定需要的),

 if(status){
   a.doSomething()

}

对于上面的可能用到a模块,也可能用不到a,这种称为软依赖.用硬依赖的方式去加载a模块是可行的,但是有些浪费资源了.

对于软依赖,可以通过 依赖前置+异步回调函数的形式 ,简述上面的代码

函数体

if( status){
  async(['a'],function(a){
    a.doSomething()
  })
}

CommonJS API定义很多普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白。它的终极目标是提供一个类似Python,Ruby和Java标准库。这样的话,开发者可以使用CommonJS API编写应用程序,然后这些应用可以运行在不同的JavaScript解释器和不同的主机环境中

CommonJS是一种规范,NodeJS是这种规范的实现

转载于:https://my.oschina.net/heyjuan/blog/1550615

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值