01-前端模塊化

前端為什么要模塊化童番?模塊化的好處?

  1. javascript這門語言本身被創(chuàng)造出來時(shí),它是基于瀏覽器的恕齐,作為嵌入式的腳本語言乞娄。隨著web的發(fā)展,Ajax技術(shù)得到廣泛應(yīng)用檐迟,jQuery等前端庫層出不窮补胚,前端代碼日益膨脹,這時(shí)候JavaScript作為嵌入式的腳本語言的定位動(dòng)搖了追迟。
  2. 避免變量污染,命名沖突
  3. 提高代碼復(fù)用率
  4. 提高代碼維護(hù)性
  5. 依賴(引入庫)關(guān)系的管理

模塊化的發(fā)展

一骚腥、原始

1敦间、函數(shù)封裝

函數(shù)的一個(gè)功能就是實(shí)現(xiàn)特定邏輯的一組語句打包。
在一個(gè)文件里面編寫幾個(gè)相關(guān)函數(shù)就是最開始的模塊了

function m1(){
  //...
}

function m2(){
  //...
}

這樣做的缺點(diǎn)很明顯束铭,污染了全局變量廓块,并且不能保證和其他模塊起沖突

2、對(duì)象封裝

為了解決函數(shù)過多污染全局變量的問題契沫,可以將所有模塊成員(方法function)封裝在一個(gè)對(duì)象中

var module = new Object({
   a:0,
   b:'哈哈',
   m1:function (){  ```  },
   m2:function (){   ```  }                
})

這樣兩個(gè)函數(shù)就被包在這個(gè)對(duì)象中带猴,當(dāng)我們要使用的時(shí)候,就是調(diào)用這個(gè)對(duì)象的屬性懈万。
但是又一個(gè)問題來了拴清,這種寫法會(huì)暴露全部的模塊成員(方法或變量)靶病,內(nèi)部狀態(tài)可以被外部改變,比如外部代碼可直接改變對(duì)象中的值

module.b= '啦啦啦';
module.m1=function (){   ```  };

3口予、立即執(zhí)行函數(shù)(也可以說是閉包)

最后娄周,人們又找到了新的方法——立即執(zhí)行函數(shù)(也可以說是閉包),這樣就可以達(dá)到不暴露私有成員的目的

var module = (function (){

    var _count = 5;
     
    var m1 = function (){  ```   };

    var m2 = function (){  ```   };

    return{
         m1:m1,
         m2:m2
    }

})()

二沪停、規(guī)范

1煤辨、commonjs 規(guī)范

09年出現(xiàn)了nodejs:,就是將 javascrit 脫離瀏覽器運(yùn)行. 但是帶來了問題木张,js 只剩下了語法規(guī)范(ECMAScript), 沒有了 DOM 與 BOM众辨。

這個(gè)時(shí)候需要為脫離瀏覽器的 js 提供新的 api,就引入了 commonjs 規(guī)范舷礼,也引入了模塊的概念鹃彻。commonjs 是一個(gè)更偏向于服務(wù)器端的規(guī)范。Node.js采用了CommonJS規(guī)范且轨。

Commonjs解決了模塊化的問題浮声,并且可以用在瀏覽器中,但是Commonjs是同步加載模塊旋奢,在瀏覽器訪問時(shí)泳挥,js 都是放在服務(wù)器中的, 需要加載完才可以用,而加載限制于網(wǎng)速至朗,網(wǎng)速差的時(shí)候會(huì)阻止瀏覽器的后續(xù)處理屉符,停止后續(xù)的解析,用戶體驗(yàn)不好锹引。

2矗钟、AMD規(guī)范

為了解決這個(gè)問題,又出現(xiàn)了一個(gè)AMD規(guī)范嫌变,這個(gè)規(guī)范可以實(shí)現(xiàn)模塊的異步加載吨艇。require.js采用了AMD規(guī)范。

AMD基本都是提前說明依賴模塊腾啥,然后預(yù)加載這些模塊东涡,實(shí)際上這就要求你提前想好這些依賴,提前寫好倘待,不然寫代碼過程中要回到開頭繼續(xù)添加依賴疮跑。

3、CMD規(guī)范

CMD規(guī)范是sea.js在推廣過程中的規(guī)范化產(chǎn)出凸舵,sea.js是另一種前端模塊化工具祖娘,它的出現(xiàn)緩解了requireJS的幾個(gè)痛點(diǎn)。
Seajs也是預(yù)加載依賴js啊奄,跟AMD的規(guī)范在預(yù)加載這一點(diǎn)上是相同的渐苏,明顯不同的地方是調(diào)用和聲明依賴的地方掀潮。
CMD標(biāo)準(zhǔn)傾向于在使用過程中提出依賴,就是不管代碼寫到哪突然發(fā)現(xiàn)需要依賴另一個(gè)模塊整以,那就在當(dāng)前代碼用require引入就可以了胧辽,即按需加載,規(guī)范會(huì)幫你搞定預(yù)加載公黑。
但是AMD標(biāo)準(zhǔn)讓你必須提前在頭部依賴參數(shù)部分寫好邑商。這就是最明顯的區(qū)別。(AMD和CMD都是用difine和require)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凡蚜,一起剝皮案震驚了整個(gè)濱河市人断,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌朝蜘,老刑警劉巖恶迈,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異谱醇,居然都是意外死亡暇仲,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門副渴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奈附,“玉大人,你說我怎么就攤上這事煮剧〕饴耍” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵勉盅,是天一觀的道長(zhǎng)佑颇。 經(jīng)常有香客問我,道長(zhǎng)草娜,這世上最難降的妖魔是什么挑胸? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮宰闰,結(jié)果婚禮上嗜暴,老公的妹妹穿的比我還像新娘。我一直安慰自己议蟆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布萎战。 她就那樣靜靜地躺著咐容,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚂维。 梳的紋絲不亂的頭發(fā)上戳粒,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天路狮,我揣著相機(jī)與錄音,去河邊找鬼蔚约。 笑死奄妨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苹祟。 我是一名探鬼主播砸抛,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼树枫!你這毒婦竟也來了直焙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤砂轻,失蹤者是張志新(化名)和其女友劉穎奔誓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搔涝,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡厨喂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了庄呈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜕煌。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖抒痒,靈堂內(nèi)的尸體忽然破棺而出幌绍,到底是詐尸還是另有隱情,我是刑警寧澤故响,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布傀广,位于F島的核電站,受9級(jí)特大地震影響彩届,放射性物質(zhì)發(fā)生泄漏伪冰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一樟蠕、第九天 我趴在偏房一處隱蔽的房頂上張望贮聂。 院中可真熱鬧,春花似錦寨辩、人聲如沸吓懈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耻警。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間甘穿,已是汗流浹背腮恩。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留温兼,地道東北人秸滴。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像募判,于是被迫代替她去往敵國(guó)和親荡含。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容