`
highfly-s
  • 浏览: 100762 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

AMD 和 CMD 的区别有哪些?

阅读更多

AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。
CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。
类似的还有 CommonJS Modules/2.0 规范,是 BravoJS 在推广过程中对模块定义的规范化产出。
还有不少⋯⋯

这些规范的目的都是为了 JavaScript 的模块化开发,特别是在浏览器端的。
目前这些规范的实现都能达成浏览器端模块化开发的目的

区别:

1. 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as lazy as possible.

2. CMD 推崇依赖就近,AMD 推崇依赖前置。看代码:

// 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 的写法,同时还支持将 require 作为依赖项传递,但 RequireJS 的作者默认是最喜欢上面的写法,也是官方文档里默认的模块定义写法。


3. AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,没有全局 require,而是根据模块系统的完备性,提供 seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹

分享到:
评论

相关推荐

    JS中的模块规范(CommonJS,AMD,CMD(少用))

    以上介绍的三种模块规范——**CommonJS**、**AMD** 和 **CMD**,各有侧重,适用于不同的场景。CommonJS主要用于服务器端的开发,而AMD和CMD则更适合于浏览器端的开发。随着ES6标准中模块的支持,这些规范的重要性...

    vue文件经过编译使其满足AMDCMD的模式

    AMD主要被RequireJS所采用,适用于浏览器环境,强调异步加载模块,而CMD则是Sea.js推崇的规范,两者在加载和依赖处理上有一定区别,但基本思想相似,都是为了解决JavaScript的模块化问题。 当Vue.js项目需要与AMD或...

    JS中的模块规范(CommonJS,AMD,CMD

    ### JS中的模块规范(CommonJS, AMD, CMD) #### 一、CommonJS CommonJS 是一种模块化标准,最初被设计用于服务器端JavaScript环境,特别是针对Node.js这样的平台。CommonJS 的核心理念是允许开发者将代码组织成独立...

    JavaScript模块规范之AMD规范和CMD规范

    总结一下AMD和CMD的主要区别: 1. 依赖执行时机:AMD通常在定义时执行依赖,CMD则是延迟执行,按需加载。 2. 依赖声明方式:AMD在`define`中显式声明依赖,CMD使用`require`在工厂函数内部引入依赖。 3. 社区支持:...

    AMD之require.js与CMD之sea.js

    AMD(Asynchronous Module Definition)和CMD(Common Module Definition)是两种不同的JavaScript模块化开发规范,它们主要用于解决在浏览器环境中加载和组织代码的问题。AMD由RequireJS提出并推广,CMD则是Sea.js...

    浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结.docx

    通过上述分析可以看出,CommonJS、AMD和CMD各有特色,适用于不同的场景: - **CommonJS**:主要用于服务器端开发,提供同步加载机制,适合对加载顺序要求严格的场景。 - **AMD**:针对浏览器环境设计,支持异步加载...

    zonvert:将 AMD 转换为 CMD

    自述文件作者:林东日期:2015 年 4 月 6 日操作说明npm install zonvert安装zonvert包zonvert -c ~/.jshintrc -d ./test/src -o ./test/build 这会将AMD转换为CMD javascript 文件。例子转换输入 define ( [ ...

    AMD 与 CMD.md

    模块化:是一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式。 在理想状态下我们只需要完成自己部分的核心业务逻辑代码,其他方面的依赖可以通过直接加载被人已经写好模块进行使用即可。

    模块化开发及AMD、CMD、Require.js、sea.js、common.js、ES6的对比

    模块化开发及AMD、CMD、Require.js、sea.js、common.js、ES6的对比;模块化开发就是封装细节,提供使用接口,彼此之间互不影响,每个模块都是实现某一特定的功能。模块化开发的基础就是函数

    mysqlclient-1.4.6-cp38-cp38-win_amd64.whl.rar

    python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的...

    modularJs_exercise:AMD&CMD&CommonJS练习

    - AMD更强调并行加载和依赖管理,适合大型复杂项目,尤其是有多个外部库和模块需要加载的情况。 - CMD则更倾向于保持代码的自然顺序,依赖就近,更符合JavaScript的编程习惯,适合小型到中型项目。 5. **实践中的...

    将一些js库改写成符合cmd规范的模块

    - 查看库是否已经使用了AMD(Asynchronous Module Definition)或者CommonJS等其他模块化方案,如果有,转换起来会相对容易些。 3. **将全局变量转化为模块** - 全局变量通常是CMD改造的主要目标,将其封装到`...

    《模块化系列》彻底理清 AMD,CommonJS,CMD,UMD,ES6.md

    《模块化系列》彻底理清 AMD,CommonJS,CMD,UMD,ES6

    解决AMD芯片hyper-v问题

    AMD芯片在AndroidStudio中强烈受限。这个cmd文件执行了可以开控制hyper-v.运行完要重启电脑

    TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl

    在windows的cmd里面输入命令: pip install TA_Lib‑0.4.17‑cp37‑cp37m‑win_amd64.whl 把TA_Lib‑0.4.17‑cp37‑cp37m‑win_amd64.whl放在C:\Windows\system32>文件夹下面 C:\Windows\system32>pip install TA_...

    TA-Lib-0.4.32-cp312-cp312-win-amd64.whl

    python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的...

    TA-Lib-0.4.32-cp37-cp37m-win-amd64.whl

    python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的...

Global site tag (gtag.js) - Google Analytics