一提到模塊化開發(fā)叫胖,就會(huì)提到 CommonJS 規(guī)范和?AMD?規(guī)范互艾,這些都是模塊化的依據(jù)規(guī)范牺勾,
RequireJS 就是?AMD?規(guī)范的最好體實(shí)現(xiàn)青柄;
NodeJS?就是?CommonJS?規(guī)范的最好體現(xiàn)
JavaScript?就是?ECMAScript?規(guī)范的最好體現(xiàn);
實(shí)現(xiàn) CommonJS 規(guī)范的API是同步加載模塊的映胁,實(shí)現(xiàn) AMD 規(guī)范的API是異步加載模塊的木羹;異步加載即非阻塞加載,更適合瀏覽器端解孙;
官方文檔對(duì)RequireJS的描述:
RequireJS是一個(gè)JavaScript模塊加載器坑填,它非常適合在瀏覽器中使用,但它也可以用在其他腳本環(huán)境弛姜,就像Rhino and Node 使用RequireJS加載模塊化腳本將提高代碼的加載速度和質(zhì)量脐瑰;
JavaScript是一個(gè)強(qiáng)大的腳本(函數(shù)式+面向?qū)ο螅┱Z言,它有很多快速高效的解釋器廷臼,然而苍在,它并沒有一個(gè)用于更廣泛應(yīng)用程序的標(biāo)準(zhǔn)庫绝页。
CommonJS是個(gè)規(guī)范,這個(gè)規(guī)范中定義了許多API忌穿,用于普通應(yīng)用程序(主要指非瀏覽器的應(yīng)用)使用的API,從而填補(bǔ)了這個(gè)空白,它的終極目標(biāo)是提供一個(gè)類似Python结啼,Ruby和Java標(biāo)準(zhǔn)庫掠剑,這樣的話,開發(fā)者可以使用CommonJS API 編寫應(yīng)用程序郊愧,然后這些應(yīng)用可以運(yùn)行在不同的JavaScript解釋器和不同的主機(jī)環(huán)境中朴译。
CommonJS其中就有一個(gè)Modules規(guī)范,這個(gè)Modules規(guī)范設(shè)計(jì)之初是為了server端設(shè)計(jì)的属铁,它是一個(gè)同步的模式眠寿,這種模式并不適合瀏覽器端,所以AMD規(guī)范誕生了焦蘑,它最大的特點(diǎn)就是可以異步的方式加載模塊盯拱。
RequrieJS其實(shí)就是AMD現(xiàn)在用的最廣泛,最流行的實(shí)現(xiàn)例嘱,其中狡逢,Require.js主要提供define和require兩個(gè)方法來進(jìn)行模塊化編程,前者用來定義模塊拼卵,后者用來調(diào)用模塊奢浑。其中:requirejs和require的關(guān)系如同:jQuery和$的關(guān)系。