CMD 和 AMD

通常我们会拿 CMD 规范来和 AMD 规范进行对比。那么 AMD 和 CMD 有什么区别和对比的呢?

申明依赖模块不同

对于依赖的模块,AMD 和 CMD 的处理方式是不一样的。

  • AMD 推崇依赖前置,在定义模块的时候就要声明其依赖的模块。
  • CMD 推崇依赖就近,只有在用到某个模块的时候再去 require 。
// CMD
define(function(require, exports, module) {
  var a = require(‘./a‘)
  a.doSomething()
  // 依赖可以就近书写
  var b = require(‘./b‘)
  b.doSomething()
})

// AMD 默认推荐的是 依赖必须一开始就写好
define([‘./a‘, ‘./b‘], function(a, b) {
  a.doSomething()
  b.doSomething()
})

执行依赖模块时机

  • AMD 提前执行依赖(异步加载:依赖先执行)+延迟执行
  • CMD 延迟执行依赖(运行到需加载,根据顺序执行)

加载器

AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。
CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。

使用SeaJS

SeaJS 是 CMD 规范的具体实现。使用 SeaJS 和使用 requireJS 十分类似,只是写法上稍微有所不同,具体如下:

  1. 引入 SeaJS 的库
  2. 定义模块(define)
  3. 暴露模块接口(exports)
  4. 加载依赖模块(require)

如下面的代码:

<script src="./sea.js"></script>
<script>
  define(function (require,exports,module) {
      // exports : 对外的接口
      // requires : 依赖的模块
      require(‘./a.js‘);//如果地址是一个模块的话,那么require的返回值就是模块中的exports
  });
</script>

SeaJS(CMD)为什么被淘汰

事实上,在过去 SeaJS(CMD) 曾经颇具影响力,为什么要逐渐被淘汰了呢?

感兴趣的同学可以带着这样的问题,阅读下面的帖子。
Sea.js作者发布微博: 应该给 Sea.js 和 KISSY 也树一块墓碑了。 为啥啊?过时了吗?

更多阅读

时间: 2024-10-26 19:12:44

CMD 和 AMD的相关文章

CMD和AMD

CMD是国内玉伯在开发SeaJS的时候提出来的,属于CommonJS的一种规范,此外还有AMD,其对于的框架是RequireJS. 二者的异同之处: 二者都是异步(Asynchronuous Module Definition)的一个实现: CMD和AMD都是CommonJS的一种规范的实现定义,RequireJS和SeaJS是对应的实践: CMD和AMD的区别:CMD相当于按需加载,定义一个模块的时候不需要立即制定依赖模块,在需要的时候require就可以了,比较方便:而AMD则相反,定义模块

CommonJS、CMD、AMD、NodeJS创造JavaScript的未来

CMD是国内玉伯大神在开发SeaJS的时候提出来的,属于CommonJS的一种规范,此外还有AMD,其对于的框架是RequireJS 1.二者都是异步模块定义(Asynchronuous Module Definition)的一个实现: 2.CMD和AMD都是CommonJS的一种规范的实现定义,RequireJS和SeaJS是对应的实践: 3.CMD和AMD的区别:CMD相当于按需加载,定义一个模块的时候不需要立即制定依赖模块,在需要的时候require就可以了,比较方便:而AMD则相反,定义

CMD和AMD区别的概括

CMD和AMD区别   AMD CMD 关于依赖的模块 提前执行(不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)), 延迟执行 关于依赖的位置 依赖前置 AMD 默认推荐的是define(['./a', './b'], function(a, b) { // 依赖必须一开始就写好a.doSomething()// 此处略去 100 行b.doSomething()...})  依赖就近  CMDdefine(function(require, exp

CMD和AMD探秘

踏上前端这条道路以来,我一直以为自己就是个娴熟的切图工,每天只需要做着重复的劳动,切图,做网站.然而,技术的发展是日新月异的,切图工早就面临淘汰.随着浏览器功能越来越完善,前端项目越来越大,代码越来越复杂,为了适应这种变化,越来越要求前端开发模块化. 首先介绍一下什么是模块化.模块化是指解决某一个复杂问题,按照一种分类的思维把问题进行系统分解,并处理.譬如将巨大的系统代码,整合优化分割成高内聚低耦合的模块,达到便于管理,维护和开发的目的. 模块化设计,必须实现以下能力: 定义封装的模块 定义新模

关于模块化开发,CMD和AMD

模块化 首先要理解的是什么是模块化,模块化这个词来源于研究工程设计中的<Design Rules>,是指可组成系统的.具有某种确定独立功能的半自律性的子系统. 模块化在编程中的意义是为了减少软件的复杂度,使软件不会因为不断的扩大而导致功能维护.添加变得十分困难.而通过模块的拼接,就可以组成一些列的复杂的系统,同时   模块与模块之间耦合度低.这种拼凑是灵活的,自由的 为什么要模块化 web前端不断发展,其中各种插件的代码量已经不是以前可比的了.而代码量的上升会暴露出许多问题: 首先是命名,即命

cmd和amd的区别(js模块化)

AMD 是 RequireJS 在推广过程中对模块定义的规范化产出.CMD 是 SeaJS 在推广过程中对模块定义的规范化产出.类似的还有 CommonJS Modules/2.0 规范,是 BravoJS 在推广过程中对模块定义的规范化产出.还有不少?? 这些规范的目的都是为了 JavaScript 的模块化开发,特别是在浏览器端的.目前这些规范的实现都能达成浏览器端模块化开发的目的. 区别: 1. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行.不过 RequireJS 从 2.0

CMD和AMD理解

#AMD <br>1.AMD就是Asynchronous Module Definition,中文名是异步模块定义的意思.<br>2.AMD解决两个问题:解决依赖.异步加载<br>3.requireJs语法<br> 定义:define(id,dependencies,factory); id:可选参数,用来定义模块的标识,如果没有,则默认是脚本的文件名(去掉扩展名) dependencies:当前模块依赖的其他模块名称数组 factory:工厂方法,模块初始

cmd与amd

AMD 是 RequireJS 在推广过程中对模块定义的规范化产出.CMD 是 SeaJS 在推广过程中对模块定义的规范化产出.类似的还有 CommonJS Modules/2.0 规范,是 BravoJS 在推广过程中对模块定义的规范化产出.还有不少?? 这些规范的目的都是为了 JavaScript 的模块化开发,特别是在浏览器端的.目前这些规范的实现都能达成浏览器端模块化开发的目的. 区别: 1. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行.不过 RequireJS 从 2.0

关于commonjs,AMD,CMD之间的异同

1.简介 随着前端业务复杂度的增加,模块化成为一个大的趋势.而在ES6还未被浏览器所支持的情况下,commonjs作为ES6中标准模块加载方案,在客服端中的支持情况并不好,现在在客服端中有2中模块化的解决方案,CMD和AMD,他们的代表分别为seajs和requirejs.这篇文章主要介绍我对commonjs.AMD以及CMD的理解. 2.commonJS commonjs的目标是制定一个js模块化的标准,它的目标制定一个可以同时在客服端和服务端运行的模块.这些模块拥有自己独立的作用域,也可以向