在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 網頁設計教程 > 詳細頁面

JavaScript模塊規范的CommonJS、AMD與CMD的介紹

JavaScript模塊規范的CommonJS、AMD與CMD的介紹

更新時間:2025-12-08 文章作者:未知 信息來源:網絡 閱讀次數:

網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立...
網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立在超文本基礎之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。
本篇文章給大家帶來的內容是關于JavaScript模塊規范的CommonJS、AMD和CMD的介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

本篇文章來自對文章《js模塊化編程之徹底弄懂CommonJS和AMD/CMD!》的總結,大部分摘自文章原話,本人只是為了學習方便做的筆記,之后有新的體會會及時補充。如有侵權,聯系必刪,致敬前輩!

在開始之前,先回答我:為什么模塊很重要?

答:因為有了模塊,我們就可以更方便地使用別人的代碼,想要什么功能,就加載什么模塊。但是,這樣做有一個前提,那就是大家必須以同樣的方式編寫模塊,否則你有你的寫法,我有我的寫法,豈不是亂了套!

于是下面三個模塊規范出來了,這篇文章也出來了。提前說明一下,CommonJS規范的實現是node.js,AMD(Asynchronous Module Definition)規范的實現是require.js和curl.js,CMD規范的實現是Sea.js。

JS中的模塊規范(CommonJS,AMD,CMD),如果你聽過js模塊化這個東西,那么你就應該聽過或CommonJS或AMD甚至是CMD這些規范咯,我也聽過,但之前也真的是聽聽而已。 現在就看看吧,這些規范到底是啥東西,干嘛的。本文包括這三個規范的來源及對應的產物的原理。

一、CommonJS規范

1.一開始大家都認為JS是辣雞,沒什么用,官方定義的API只能構建基于瀏覽器的應用程序,逗我呢,這太狹隘了吧(用了個高端詞,嘎嘎),CommonJS就按耐不住了,CommonJS API定義很多普通應用程序(主要指非瀏覽器的應用)使用的API,從而填補了這個空白。它的終極目標是提供一個類似Python,Ruby和Java標準庫。這樣的話,開發者可以使用CommonJS API編寫應用程序,然后這些應用可以運行在不同的JavaScript解釋器和不同的主機環境中。

在兼容CommonJS的系統中,你可以使用JavaScript開發以下程序:

(1).服務器端JavaScript應用程序
(2).命令行工具
(3).圖形界面應用程序
(4).混合應用程序(如,Titanium或Adobe AIR)

2009年,美國程序員Ryan Dahl創造了node.js項目,將javascript語言用于服務器端編程。這標志"Javascript模塊化編程"正式誕生。因為老實說,在瀏覽器環境下,沒有模塊也不是特別大的問題,畢竟網頁程序的復雜性有限;但是在服務器端,一定要有模塊,與操作系統和其他應用程序互動,否則根本沒法編程。NodeJS是CommonJS規范的實現,webpack 也是以CommonJS的形式來書寫。

node.js的模塊系統,就是參照CommonJS規范實現的。在CommonJS中,有一個全局性方法require(),用于加載模塊。假定有一個數學模塊math.js,就可以像下面這樣加載。

var math = require('math');

然后,就可以調用模塊提供的方法:

  var math = require('math');

  math.add(2,3); // 5

CommonJS定義的模塊分為:{模塊引用(require)} {模塊定義(exports)} {模塊標識(module)}

require()用來引入外部模塊;exports對象用于導出當前模塊的方法或變量,唯一的導出口;module對象就代表模塊本身。

雖說Node遵循CommonJS的規范,但是相比也是做了一些取舍,填了一些新東西的。

不過,說了CommonJS也說了Node,那么我覺得也得先了解下NPM了。NPM作為Node的包管理器,不是為了幫助Node解決依賴包的安裝問題嘛,那它肯定也要遵循CommonJS規范啦,它遵循包規范(還是理論)的。CommonJS WIKI講了它的歷史,還介紹了modules和packages等。

下面講講commonJS的原理以及簡易實現:

1、原理
瀏覽器不兼容CommonJS的根本原因,在于缺少四個Node.js環境的變量。

module
exports
require
global

只要能夠提供這四個變量,瀏覽器就能加載 CommonJS 模塊。

下面是一個簡單的示例。

var module = {
  exports: {}
};

(function(module, exports) {
  exports.multiply = function (n) { return n * 1000 };
}(module, module.exports))

var f = module.exports.multiply;
f(5) // 5000

上面代碼向一個立即執行函數提供 module 和 exports 兩個外部變量,模塊就放在這個立即執行函數里面。模塊的輸出值放在 module.exports 之中,這樣就實現了模塊的加載。

二、AMD規范

基于commonJS規范的nodeJS出來以后,服務端的模塊概念已經形成,很自然地,大家就想要客戶端模塊。而且最好兩者能夠兼容,一個模塊不用修改,在服務器和瀏覽器都可以運行。但是,由于一個重大的局限,使得CommonJS規范不適用于瀏覽器環境。還是上面的代碼,如果在瀏覽器中運行,會有一個很大的問題,你能看出來嗎?

var math = require('math');
math.add(2, 3);

第二行math.add(2, 3),在第一行require('math')之后運行,因此必須等math.js加載完成。也就是說,如果加載時間很長,整個應用就會停在那里等。您會注意到 require 是同步的。

這對服務器端不是一個問題,因為所有的模塊都存放在本地硬盤,可以同步加載完成,等待時間就是硬盤的讀取時間。但是,對于瀏覽器,這卻是一個大問題,因為模塊都放在服務器端,等待時間取決于網速的快慢,可能要等很長時間,瀏覽器處于"假死"狀態。

因此,瀏覽器端的模塊,不能采用"同步加載"(synchronous),只能采用"異步加載"(asynchronous)。這就是AMD規范誕生的背景。

CommonJS是主要為了JS在后端的表現制定的,他是不適合前端的,AMD(異步模塊定義)出現了,它就主要為前端JS的表現制定規范。

AMD是"Asynchronous Module Definition"的縮寫,意思就是"異步模塊定義"。它采用異步方式加載模塊,模塊的加載不影響它后面語句的運行。所有依賴這個模塊的語句,都定義在一個回調函數中,等到加載完成之后,這個回調函數才會運行。

AMD也采用require()語句加載模塊,但是不同于CommonJS,它要求兩個參數:

require([module], callback);

第一個參數[module],是一個數組,里面的成員就是要加載的模塊;第二個參數callback,則是加載成功之后的回調函數。如果將前面的代碼改寫成AMD形式,就是下面這樣:

require(['math'], function (math) {
    math.add(2, 3);
});

math.add()與math模塊加載不是同步的,瀏覽器不會發生假死。所以很顯然,AMD比較適合瀏覽器環境。目前,主要有兩個Javascript庫實現了AMD規范:require.js和curl.js。

Require.js主要提供define和require兩個方法來進行模塊化編程,前者用來定義模塊,后者用來調用模塊。RequireJS就是實現了AMD規范的呢。

三、CMD規范

大名遠揚的玉伯寫了seajs,就是遵循他提出的CMD規范,與AMD蠻相近的,不過用起來感覺更加方便些,最重要的是中文版,應有盡有:seajs官方doc

define(function(require,exports,module){...});

前面說AMD,說RequireJS實現了AMD,CMD看起來與AMD好像呀,那RequireJS與SeaJS像不像呢?雖然CMD與AMD蠻像的,但區別還是挺明顯的,官方非官方都有闡述和理解,我覺得吧,說的都挺好

以上就是JavaScript模塊規范的CommonJS、AMD和CMD的介紹的詳細內容,更多請關注php中文網其它相關文章!


網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 青青草视频在线免费播放| 日韩在线综合网| 国产v亚洲v天堂无码久久久 | 精品少妇人妻av一区二区| 欧美性猛交xxx乱久交| 精品久久久久久久无码| 欧美三级一级片| 已婚少妇美妙人妻系列| 日本成年人网址| 色www免费视频| 黄色小视频免费网站| 国产在线拍揄自揄拍无码| 精品久久一二三| 免费成人在线视频网站| 女人喷潮完整视频| 91日韩视频在线观看| 成年人黄色在线观看| 国产手机免费视频| 黄色免费网址大全| 久久6免费视频| 国产成人久久婷婷精品流白浆| 在线视频观看91| 91九色国产ts另类人妖| 欧美午夜性视频| 日本成年人网址| 九九久久久久久| 日本午夜激情视频| 国产又黄又猛又粗| 国产女人18毛片| 欧美一级片中文字幕| 伊人色在线视频| 18岁网站在线观看| 午夜精品免费看| www.com毛片| 国产精品久久久久久久99| 97超碰青青草| 992tv人人草| 久久成人福利视频| 91亚洲免费视频| 中文字幕无码精品亚洲35| 五月天激情播播| 免费高清在线观看免费| 青青草原国产免费| 午夜免费高清视频| 97超碰在线人人| 99精品视频网站| 韩国日本美国免费毛片| 美女av免费观看| 成年丰满熟妇午夜免费视频| 可以免费在线看黄的网站| 狠狠精品干练久久久无码中文字幕| 毛片一区二区三区四区| 日韩一区二区高清视频| 激情成人在线观看| 91n.com在线观看| 国产男女免费视频| 国产91视频一区| 日本高清免费在线视频| 老司机午夜性大片| 亚洲xxx在线观看| 免费黄色一级网站| 亚洲综合在线网站| 国产成人久久777777| 免费无码国产v片在线观看| 久久这里只有精品8| 今天免费高清在线观看国语| 手机精品视频在线| 日韩人妻精品一区二区三区| 国产乱叫456| 国产手机视频在线观看| 精品国产乱码久久久久久1区二区| 日韩在线第三页| 搡女人真爽免费午夜网站| 成人免费毛片播放| 亚洲成色www.777999| 91极品视频在线观看| 欧美美女一级片| 天天干天天玩天天操| 天天操精品视频| 青娱乐精品在线| 四虎精品欧美一区二区免费| 天天想你在线观看完整版电影免费| 熟女熟妇伦久久影院毛片一区二区| 国产日韩视频在线播放| 欧美视频在线第一页| 国产超级av在线| 无需播放器的av| 伊人网在线免费| 国产精品宾馆在线精品酒店| xxxx一级片| 成人短视频在线看| 日韩在线综合网| 日本一二三区在线| 老太脱裤让老头玩ⅹxxxx| 国产一级不卡毛片| 超碰超碰超碰超碰超碰| 国产精品一区二区免费在线观看| 国产自偷自偷免费一区| 日韩国产精品毛片| 蜜臀久久99精品久久久酒店新书| 一级做a爱视频| 久久综合九色综合88i| 激情图片中文字幕| 国产精品999视频| 色网站在线视频| 久久久久久久久久久久久国产精品| 91欧美视频在线| 狠狠97人人婷婷五月| 日本免费在线视频观看| 茄子视频成人免费观看| 99亚洲国产精品| 日韩av一卡二卡三卡| 成年人视频网站免费观看| 特大黑人娇小亚洲女mp4| 欧美成人福利在线观看| 波多野结衣之无限发射| 日本美女爱爱视频| 一级淫片在线观看| 国产精品乱码久久久久| www在线观看免费| 久久久无码中文字幕久...| www.99在线| aaa毛片在线观看| 欧美日韩性生活片| 日韩精品视频在线观看视频| 福利在线一区二区| 国内av一区二区| 成年人网站大全| 欧美日韩激情视频在线观看| 欧美又粗又长又爽做受| 免费极品av一视觉盛宴| 欧美黄色免费网址| 日韩精品一区二区在线视频| 欧洲金发美女大战黑人| 欧美少妇在线观看| www国产免费| 日韩欧美不卡在线| 国产乱子伦农村叉叉叉| 2022亚洲天堂| 九九热精品在线播放| 国产传媒免费观看| 在线免费看污网站| 黄色网zhan| 国产原创中文在线观看| 黄色一级片播放| 免费涩涩18网站入口| 九九九九九伊人| 狠狠噜天天噜日日噜| 欧美视频在线观看视频| 日本少妇高潮喷水视频| 丝袜制服一区二区三区| 激情文学亚洲色图| 久久99久久久久久| 黄色片久久久久| 午夜影院免费版| 亚洲熟妇无码另类久久久| 国产无套粉嫩白浆内谢的出处| 午夜视频在线网站| 国产成人永久免费视频| 国产精品无码专区av在线播放| 一区二区三区欧美精品| 日本午夜激情视频| 最新av免费在线观看| 国产一线二线三线女| 最新中文字幕2018| 妺妺窝人体色www看人体| 国产精品无码av无码| 在线观看污视频| 国产精品乱码久久久久| 2022中文字幕| 污污网站在线观看视频| 免费观看国产精品视频| 最新中文字幕久久| 亚洲狼人综合干| 国产中文字幕乱人伦在线观看| 久热在线视频观看| 日韩a在线播放| 欧美日韩激情四射| 中文字幕日韩综合| 北条麻妃视频在线| 阿v天堂2017| 青青草视频国产| 中文字幕一区二区三区四| 黑森林福利视频导航| 日本在线视频www色| 三区视频在线观看| 欧美第一页浮力影院| 国产二区视频在线播放| 丝袜人妻一区二区三区| 91九色国产ts另类人妖| 99re6在线观看| 国产精品igao| 日本美女高潮视频| 国产淫片av片久久久久久| 给我免费播放片在线观看| 欧美人成在线观看| 草草视频在线免费观看| 国产自产在线视频| 国产午夜福利100集发布| 日韩中文字幕在线免费|