amd和cmd区别
AMD 是 RequireJS 在推廣過程中對模塊定義的規范化產出。
CMD 是 SeaJS 在推廣過程中對模塊定義的規范化產出。
對于依賴的模塊,AMD 是提前執行,CMD 是延遲執行。
不過 RequireJS 從 2.0 開始,也改成可以延遲執行(根據寫法不同,處理方式不同)。
CMD 推崇 as lazy as possible.
CMD 推崇依賴就近,AMD 推崇依賴前置。
// CMD
define(function(require, exports, module) {
var a = require('./a')
a.doSomething()
// 此處略去 100 行
var b = require('./b') // 依賴可以就近書寫
b.doSomething()
// ...?
})
// AMD 默認推薦的是
require.config({ paths: { 'jquery': '../vendor/jquery-1.12.0.min', 'jquery-ui':'../assets/js/jquery-ui.min', 'd3': "../vendor/d3.v3", // 'dagre-d3': "../vendor/dagre-d3", 'dagre-d3': "../assets/compress/dagre-d3.min", 'interact': "../vendor/interact.min", 'mousetrap': "../vendor/mousetrap.min", 'sinbad': '../sinbad/js/sinbad.min', 'bootstrap':'../assets/js/bootstrap', 'ace':'../assets/js/ace', //ace框架 //'aceCode':'../vendor/editor/ace', //ace代碼插件 'aceCode':'../assets/compress/ace-code.min', 'aceElements':'../assets/js/ace-elements', 'slimscroll':'../vendor/transparent-dark/lib/slimScroll/jquery.slimscroll.min', //light blue scroll插件 'modify':'../statics/flow/modify', }, shim: { 'jquery-ui': { deps: ['jquery'] }, 'bootstrap': { deps: ['jquery'], exports: 'bootstrap' }, 'editor': { deps: ['aceCode'] } } }); 上面requirejs === require /// require([ 'd3', 'property', 'sinbad', 'editor', 'jquery-ui', 'bootstrap', 'modify', 'aceCode', 'link-rules', ], function (d3, property, sinbad,editor, scroll) { console.log(1) require('jquery-ui'); }); 上面requirejs === require === defineshim,是依賴,{deps:"xxx"}
define(['./a', './b'], function(a, b) { // 依賴必須一開始就寫好
a.doSomething()
b.doSomething()
})
AMD 的 API 默認是一個當多個用,CMD 的 API 嚴格區分,推崇職責單一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。
CMD 里,沒有全局 require,而是根據模塊系統的完備性,提供 seajs.use 來實現模塊系統的加載啟動。CMD 里,每個 API 都簡單純粹。
?
轉載于:https://www.cnblogs.com/MDGE/p/11038746.html
總結
- 上一篇: 165-PHP 文本替换函数str_re
- 下一篇: AES可以加密成