AMD和CMD的区别,转载玉伯在知乎上的回答。
AMD 规范在这里:https://github.com/amdjs/amdjs-api/wiki/AMD
CMD 规范在这里:https://github.com/seajs/seajs/issues/242
AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。
CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。
类似的还有 CommonJS Modules/2.0 规范,是 BravoJS 在推广过程中对模块定义的规范化产出。
还有不少……
这些规范的目的都是为了 JavaScript 的模块化开发,特别是在浏览器端的。
目前这些规范的实现都能达成浏览器端模块化开发的目的。
区别:
- 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as lazy as possible.
- CMD 推崇依赖就近,AMD 推崇依赖前置。看代码:
// 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 的写法,同时还支持将 require 作为依赖项传递,但 RequireJS 的作者默认是最喜欢上面的写法,也是官方文档里默认的模块定义写法。
- AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,没有全局 require,而是根据模块系统的完备性,提供 seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹。
- 还有一些细节差异,具体看这个规范的定义就好,就不多说了。
另外,SeaJS 和 RequireJS 的差异,可以参考:https://github.com/seajs/seajs/issues/277
其他异步加载资源:
lodjs: https://github.com/yanhaijing/lodjs
curl.js : https://github.com/cujojs/curl
loader.js : https://github.com/ember-cli/loader.js
define.js : https://github.com/fixjs/define.js
esl.js : https://github.com/ecomfe/esl
modjs : https://github.com/fex-team/mod
AMD和CMD的区别,转载玉伯在知乎上的回答。相关推荐
- AMD 和 CMD 的区别有哪些? (玉伯)
AMD 和 CMD 的区别有哪些? 作者:玉伯 链接:https://www.zhihu.com/question/20351507/answer/14859415 来源:知乎 AMD 规范在这里:h ...
- 前端模块化,AMD与CMD的区别
在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可:如今CPU.浏览器性能得到了极大的提升,很多页面逻辑迁移到了客户端(表单验证等),随着web2.0时代的到来,Ajax技术得 ...
- AMD和CMD的区别
他们两者的共同点就是都是一种框架在推广的过程中对模块定义的规范产出:而且他们都是异步加载模块. AMD即Asynchronous Module Definition,翻译过来就是异步模块化定义,是一个 ...
- AMD与CMD区别(玉伯) - 2015
原话 学习下 AMD 规范在这里:https://github.com/amdjs/amdjs-api/wiki/AMD CMD 规范在这里:https://github.com/seajs/seaj ...
- 【AMD和CMD的区别】
最主要的是: AMD是预加载,CMD是懒加载.AMD是提前执行,CMD是延迟执行. amd (在对应的加载之前导入),cmd(在用的时候导入). 以下为相关补充: AMD AMD 即Asynchron ...
- 理解AMD ,CMD,CommonJS规范
https://blog.csdn.net/xcymorningsun/article/details/52709608 理解AMD ,CMD,CommonJS规范 2016年09月30日 10:33 ...
- 前端开发 AMD 和 CMD 的规范区别
AMD 规范在这里:https://github.com/amdjs/amdjs-api/wiki/AMD CMD 规范在这里:https://github.com/seajs/seajs/issue ...
- JavaScript模块化 --- Commonjs、AMD、CMD、es6 modules
随着前端js代码复杂度的提高,JavaScript模块化这个概念便被提出来,前端社区也不断地实现前端模块化,直到es6对其进行了规范,下面就介绍JavaScript模块化. 这篇文章还是希望能给大家一 ...
- 模块化 AMD与CMD 规范
JavaSript模块规范 - AMD规范与CMD规范介绍 2014-02-19 13:12:01 分类: JavaScript JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单 ...
最新文章
- Ansible01-Ansible基础和部署
- python学习书籍推荐-强烈推荐:Python学习必看书籍-带你高效学习
- 项目管理之道之沟通管理-外部接口只能有一个
- 【渝粤教育】国家开放大学2018年秋季 2332T高等数学基础 参考试题
- WebSocket 实现链接 群聊(low low low 版本)
- 汽车芯片格局重构「众生相」,各路玩家「各怀心事」
- 模电笔记1 | 信号的放大与分贝计算
- 日本作家将编程语言变成了动漫人物,你猜C语言是萝莉还是御姐?不得不说脑洞实在太大了!
- 浅谈屏幕适配 dp dip sp dpi ppi px sp
- Excel不用分列函数将单元格中顿号隔开的数求和
- 程序员这条路,选择深耕技术,还是全面学习比较好?
- 如何简单高效的创建用户故事地图?
- matlab中将数据保存为txt文件_matlab中将数据输出保存为txt格式文件的方式
- 鸡兔同笼35个头94只脚用 鸡多少只?兔有多少只? Js解答
- 蘑菇模拟器TV版 for Android,真实采集蘑菇模拟器
- WIN10系统文件加密(纯手工技巧,非代码类)
- TCP/IP技术回顾(3)—网际层
- Java菜鸟到大牛学习路线培训视频
- 【ESP32_8266_WiFi (十三)】ESP8266自动配网 – WiFiManager库使用说明
- 为什么最难不过二叉树的算法出现在面试题中都会被应聘者抱怨?