亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript模塊規范之AMD規范和CMD規范

2019-11-20 11:23:53
字體:
來源:轉載
供稿:網友

模塊化是指在解決某一個復雜問題或者一系列的雜糅問題時,依照一種分類的思維把問題進行系統性的分解以之處理。模塊化是一種處理復雜系統分解為代碼結構更合理,可維護性更高的可管理的模塊的方式??梢韵胂笠粋€巨大的系統代碼,被整合優化分割成邏輯性很強的模塊時,對于軟件是一種何等意義的存在。對于軟件行業來說:解耦軟件系統的復雜性,使得不管多么大的系統,也可以將管理,開發,維護變得“有理可循”。

還有一些對于模塊化一些專業的定義為:模塊化是軟件系統的屬性,這個系統被分解為一組高內聚,低耦合的模塊。那么在理想狀態下我們只需要完成自己部分的核心業務邏輯代碼,其他方面的依賴可以通過直接加載被人已經寫好模塊進行使用即可。

一、AMD

AMD就只有一個接口:define(id?,dependencies?,factory);

它要在聲明模塊的時候制定所有的依賴(dep),并且還要當做形參傳到factory中,像這樣:

復制代碼 代碼如下:

define(['dep1','dep2'],function(dep1,dep2){...});

要是沒什么依賴,就定義簡單的模塊,下面這樣就可以啦

define(function(){  var exports = {};  exports.method = function(){...};  return exports;});

這里有define,把東西包裝起來,那Node實現中怎么沒看到有define關鍵字呢,它也要把東西包裝起來,其實,只是Node隱式包裝了而已..

RequireJS就是實現了AMD規范的

二、CMD

玉伯寫了seajs,就是遵循他提出的CMD規范,比AMD稍微強大點,用起來感覺也方便些

三、AMD與CMD的區別

CMD相當于按需加載,定義一個模塊的時候不需要立即制定依賴模塊,在需要的時候require就可以了,比較方便;而AMD則相反,定義模塊的時候需要制定依賴模塊,并以形參的方式引入factory中

//AMD方式定義模塊

define(['dep1','dep2'],function(dep1,dep2){  //內部只能使用制定的模塊  return function(){};});

//CMD

define(function(require,exports,module){ //此處如果需要某XX模塊,可以引入 var xx=require('XX');});

而SEAJS也有use功能也是需要先引入所有依賴的模塊,如

//SEAJS.Use方式seajs.use(['dep1','dep2'],function(dep1,dep2){  //這里實現事務});

 四、插件支持

但全球有兩種比較流行的 JavaScript 模塊化體系,一個是 Node 實現的 CommonJS,另外一個是 AMD。很多類庫都同時支持 AMD 和 CommonJS,但是不支持 CMD。或許國內有很多 CMD 模塊,但并沒有在世界上流行起來。

現在比較火的 React 及周邊類庫,就是直接使用 CommonJS 的模塊體系,使用 npm 管理模塊,使用 Browserify 打包輸出模塊。
不久的將來 ES6 中新的模塊化標準,可能就都得遵循新的標準了,什么AMD、CMD可能到時也不會怎么用了。

但是目前來說,前端開發沒有用模塊化編程就真的out的了,而目前的模塊化編程,本人還是建議用SEAJS,雖然很多插件需要追加或修改一小塊代碼才能支持。但改過一次就能反復使用,也不會影響其它標準的支持??傮w還算是比較方便實用的。

單獨解釋AMD 與 CMD 區別到底在哪里?

    看了以上 AMD,requireJS 與 CMD, seaJS的簡單介紹會有點感覺模糊,總感覺較為相似。因為像 requireJS 其并不是只是純粹的AMD固有思想,其也是有CMD規范的思想,只不過是推薦 AMD規范方式而已, seaJS也是一樣。

    下面是玉伯對于 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 推崇依賴前置??创a:

// 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 都簡單純粹。

    4. 還有一些細節差異,具體看這個規范的定義就好,就不多說了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本一区二区在线播放| 亚洲精品国精品久久99热| 欧美高清视频免费观看| 91高潮在线观看| 久久久久久久久爱| www.99久久热国产日韩欧美.com| 欧美成人午夜影院| 久久久久久久国产精品视频| 亚洲加勒比久久88色综合| 97国产在线视频| 欧美自拍大量在线观看| 午夜美女久久久久爽久久| 亚洲最大成人在线| 国产精品∨欧美精品v日韩精品| 中文字幕一区电影| 欧美午夜片在线免费观看| 久久亚洲国产精品成人av秋霞| 日韩电影中文 亚洲精品乱码| 成人性生交大片免费看小说| 91沈先生在线观看| 成人精品aaaa网站| 亚洲久久久久久久久久久| 97精品一区二区三区| 亚洲电影免费观看高清| 亚洲免费伊人电影在线观看av| 国产精品久久久久久亚洲影视| 97国产精品视频| 亚洲精品大尺度| 日韩欧美国产一区二区| 国产精品视频网站| 日本国产欧美一区二区三区| 国产一区二区三区视频免费| 欧美精品国产精品日韩精品| 久久久久一本一区二区青青蜜月| 日韩欧美综合在线视频| 久久久久在线观看| 国产精品免费观看在线| 欧美精品第一页在线播放| 亚洲第一区中文字幕| 国产精品女人久久久久久| 欧美国产第一页| 国产精品成人aaaaa网站| 久久国产精品免费视频| 欧美大片免费观看| 91日本视频在线| 岛国av一区二区三区| 国产激情久久久久| 一区二区三区四区在线观看视频| 91亚洲精品在线| 在线观看欧美日韩国产| 国产91ⅴ在线精品免费观看| 亚洲少妇激情视频| 国产精品久久色| 国产精品久久久久免费a∨| 欧美激情精品在线| 精品久久久久久中文字幕一区奶水| 久久国产加勒比精品无码| 久色乳综合思思在线视频| 91久久精品国产91久久| 久久国产精品免费视频| 亚洲欧美中文日韩在线| 欧美日韩国产中文字幕| zzijzzij亚洲日本成熟少妇| 91sao在线观看国产| 视频在线一区二区| 国产亚洲精品激情久久| 亚洲欧美制服中文字幕| 中文字幕在线观看亚洲| 热re91久久精品国99热蜜臀| 久久久久久网站| 欧美成人剧情片在线观看| 色www亚洲国产张柏芝| 日本欧美国产在线| 日韩精品久久久久| 欧美另类极品videosbest最新版本| 日韩欧美在线网址| 亚洲国产精品久久久久久| 国产精品久久久久久久久久久久久| 久久99久久99精品中文字幕| 不用播放器成人网| 日韩在线资源网| 精品视频—区二区三区免费| 欧美精品在线播放| 亚洲午夜未删减在线观看| 国产成人涩涩涩视频在线观看| 久久久欧美一区二区| 欧美亚洲国产视频| 欧美日韩激情网| 国产精品亚洲一区二区三区| 成人做爽爽免费视频| 91精品国产高清久久久久久久久| 日韩中文字幕在线视频播放| 成人国产精品免费视频| 久久精品中文字幕电影| 97国产一区二区精品久久呦| 日韩欧美在线网址| 国产成人综合精品| 国产成人高清激情视频在线观看| 热99精品里视频精品| 日韩亚洲第一页| 日韩精品视频在线播放| 久久精品国产视频| 免费av一区二区| 青青久久av北条麻妃海外网| 2019最新中文字幕| 亚洲xxx自由成熟| 久久久91精品国产| 国产精品成熟老女人| 久久久久久久97| 亚洲另类欧美自拍| 久久精品国产亚洲精品| 亚洲精品日韩av| 国产精品美女主播| 日韩中文字幕欧美| 亚洲第一中文字幕在线观看| 国产91免费观看| 日韩av免费在线播放| 91豆花精品一区| 国产一区二区日韩精品欧美精品| 国产精品欧美一区二区三区奶水| 九九热精品视频国产| 91大神在线播放精品| 日本久久久a级免费| 久久成人这里只有精品| 69av视频在线播放| 国产视频亚洲精品| 久久五月情影视| 91性高湖久久久久久久久_久久99| 国产精品爽爽爽爽爽爽在线观看| 亚洲国产欧美一区二区三区久久| 一区二区中文字幕| 91视频88av| 久久6精品影院| 成人h片在线播放免费网站| 一区二区在线视频播放| 国产福利成人在线| 6080yy精品一区二区三区| 国产精品一区专区欧美日韩| 主播福利视频一区| 欧美视频免费在线观看| 奇门遁甲1982国语版免费观看高清| 精品国内亚洲在观看18黄| 色与欲影视天天看综合网| 精品国产乱码久久久久久虫虫漫画| 欧美成aaa人片在线观看蜜臀| 91精品国产自产91精品| 欧美日本中文字幕| 秋霞午夜一区二区| 国产精品女人网站| 日韩av网站电影| 国产精品999999| 国产一区二区视频在线观看| 欧美激情小视频| 久久精品国产久精国产思思| 青青草99啪国产免费| 久久久亚洲福利精品午夜| 日韩精品视频在线观看免费| 欧美激情中文字幕在线| 欧美视频专区一二在线观看| 456亚洲影院| 欧美精品电影免费在线观看| 亚洲男人的天堂在线播放| 最近2019中文免费高清视频观看www99| 欧美精品videosex极品1|