CommonJS,AMD,CMD規(guī)范-創(chuàng)新互聯(lián)

1. Javascript 先天缺乏模塊的功能。在其他高級(jí)語言中,Java有類文件,Python有import機(jī)制,Ruby有require,PHP有include和require,而Javascript 則需要依靠<script>標(biāo)簽引入代碼,當(dāng)腳本多的時(shí)候,會(huì)顯得雜亂無章。

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的濱海網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

2. 針對(duì)以上問題,CommonJS應(yīng)運(yùn)而生。CommonJS為Javascript制定了一個(gè)美好愿景:能夠在任何地方運(yùn)行?。∟ot just for browser), CommonJS希望彌補(bǔ)Javascript沒有標(biāo)準(zhǔn)的缺陷(沒有模塊系統(tǒng),標(biāo)準(zhǔn)庫(kù)較少,沒有標(biāo)準(zhǔn)接口,缺乏包管理系統(tǒng)),可以編寫大型應(yīng)用,如服務(wù)器端Javascript,命令行工具,桌面圖形界面應(yīng)用程序,混合應(yīng)用等。

3. CommonJS規(guī)范涵蓋:

模塊、二進(jìn)制Buffer, 字符集編碼,I/O流,進(jìn)程環(huán)境,文件系統(tǒng),套接字,web服務(wù)器網(wǎng)管接口,包管理等。

4. Node.JS遵循CommonJS規(guī)范,推進(jìn)了CommonJS的發(fā)展.

5. CommonJS主要是為了JS在后端的表現(xiàn)制定的,不適合前端。為什么這么說呢?

前后端Javascript分別被擱置在HTTP的兩端,二者扮演的角色不同:


瀏覽器端Javascript

服務(wù)器端Javascript

代碼的執(zhí)行需要經(jīng)歷從同一服務(wù)器端分發(fā)到多個(gè)客戶端執(zhí)行相同代碼需要多次執(zhí)行

瓶頸

在于帶寬

在于CPU和內(nèi)存資源

代碼加載方式

需要通過網(wǎng)絡(luò)加載代碼

從磁盤加載代碼(二者速度不在一個(gè)數(shù)量級(jí)上)

6. 于是AMD出現(xiàn)了,Asynchronous Module Definition. 異步模塊定義。

        它就主要為前端JS的表現(xiàn)制定規(guī)范。

AMD規(guī)范只有一個(gè)API,其模塊定義如下:

define(id?,dependencies?,factory); //id,dependencies可選,factory內(nèi)容就是實(shí)際代碼的內(nèi)容。

a. Id:模塊標(biāo)識(shí),可以省略,這里的模塊標(biāo)識(shí)指的是自己,即整個(gè)文件。所以當(dāng)id省略的時(shí)候,就相當(dāng)于定義了一個(gè)匿名模塊,這時(shí)候模塊文件名就是 模塊標(biāo)識(shí)。e.g.模塊文件放在a.js中,那么a就是模塊名。

b.  dependencies: 依賴的模塊。AMD規(guī)范要在聲明模塊的時(shí)候指定所有的依賴,并且還要當(dāng)做形參傳到factory里面。例如:

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

一個(gè)不包含依賴關(guān)系的例子:

define(function(){

var exports = {};

exports.method = function(){ ...};

return exports;

...

});

c. 從define函數(shù)中不難想到define函數(shù)具有異步性。它在執(zhí)行時(shí)首先會(huì)異步去調(diào)用第二個(gè)參數(shù)中列出的依賴模塊,當(dāng)所有模塊被載入完成后,如果第三個(gè)參數(shù)是一個(gè)回調(diào)函數(shù)則執(zhí)行。

d. 在Node.js中,沒有看到define將模塊包起來,是因?yàn)镹ode實(shí)現(xiàn)了隱式包裝(即在對(duì)模塊進(jìn)行 編譯時(shí),node會(huì)對(duì)模塊進(jìn)行頭尾包裝,以隔離各個(gè)模塊文件,防止變量污染)。

e. requireJS就是實(shí)現(xiàn)了AMD規(guī)范。

7. CMD規(guī)范由國(guó)內(nèi)的玉伯提出,與AMD規(guī)范的區(qū)別在于定義模塊和依賴引入的部分。風(fēng)格更接近于Node.可以看看Sea.js。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站題目:CommonJS,AMD,CMD規(guī)范-創(chuàng)新互聯(lián)
本文鏈接:http://muchs.cn/article38/cspisp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站品牌網(wǎng)站設(shè)計(jì)、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷、電子商務(wù)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司