模塊化

為什么要使用模塊化

  • 解決命名沖突
  • 實(shí)現(xiàn)依賴管理
  • 避免污染全局變量
    -可以實(shí)現(xiàn)代碼的異步加載法精,提高頁面性能
  • 提高代碼可讀性
  • 代碼解耦,提高復(fù)用性
  • 有利于團(tuán)隊分工

模塊化規(guī)范

模塊化規(guī)范 特點(diǎn) 應(yīng)用
CommonJS 同步加載 服務(wù)器端
AMD 依賴前置 瀏覽器端
CMD 依賴延遲執(zhí)行 瀏覽器端

CommonJS

CommonJS 是 node 采用的模塊化規(guī)范槐臀,采用同步加載模塊的方式,在服務(wù)器端是沒問題的。

  1. 一個單獨(dú)的文件就是一個模塊,每個模塊都是一個單獨(dú)的作用域邮偎,在模塊內(nèi)部定義的變量,無法被其他模塊讀取义黎,除非定義為 global 對象的屬性
  2. 模塊輸出:模塊只有一個出口禾进,module exports 對象,把輸出的內(nèi)容放入該對象廉涕。模塊內(nèi)部的操作就好比打草稿紙泻云,module exports 就是把草稿的結(jié)果拿出來
  3. 加載模塊:加載模塊使用 require 方法,該方法讀取一個文件并執(zhí)行狐蜕,返回文件內(nèi)部的 module exports 對象宠纯,如果請求的模塊不能返回,那么 require 必須拋出一個錯誤

CommonJS 范例

/*
模塊定義model.js
*/ 
var name = "cg"
function printName(){
    console.log(name);
}
function sayHello(){
    console.log("hello " + name);
}
module.exports = {
    printName: printName
    sayHello: sayHello
}
/*
加載模塊
*/
var nameModule = require("./model.js")
nameModule.printName() //"cg"
nameModule.sayHello() //"hello cg"

AMD

Asynchronous Module Definition:是 RequireJS 在推廣過程中對模塊定義的規(guī)范化產(chǎn)出馏鹤,主要用于瀏覽器端征椒。特點(diǎn)是:依賴前置,需要在定義時就寫好需要的依賴湃累,提前執(zhí)行依賴勃救,應(yīng)用有 require.js

//定義模塊 myModule.js
define(["dependency"], function(){
    var name = "cg"
    function printName(){
        console.log(name);
    }

    return {
        printName:printName
    }
})

//加載模塊
require(['myModule'], function(my){
    my.printName()
})

CMD

Common Module Definition:是 Sea.js 在推廣過程中對模塊定義的規(guī)范化產(chǎn)出,主要用于瀏覽器端治力,特點(diǎn)是:依賴延遲執(zhí)行蒙秒。依賴可以就近書寫,等到需要用到這個依賴的時候宵统,再引入這個依賴晕讲,應(yīng)用有 sea.js

//定義模塊 myModule.js
define(function(require, exports, module){
    var $ = require("jquery.js")
    $("div").addClass("active")
})

//加載模塊
seajs.use(['myModule.js'], function(my){

})

模塊化實(shí)戰(zhàn)

效果

加載更多本地測試可行
r.js 打包壓縮成一條js


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市马澈,隨后出現(xiàn)的幾起案子瓢省,更是在濱河造成了極大的恐慌,老刑警劉巖痊班,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勤婚,死亡現(xiàn)場離奇詭異,居然都是意外死亡涤伐,警方通過查閱死者的電腦和手機(jī)馒胆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門缨称,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人祝迂,你說我怎么就攤上這事睦尽。” “怎么了型雳?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵当凡,是天一觀的道長。 經(jīng)常有香客問我纠俭,道長宁玫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任柑晒,我火速辦了婚禮,結(jié)果婚禮上眷射,老公的妹妹穿的比我還像新娘匙赞。我一直安慰自己,他們只是感情好妖碉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布涌庭。 她就那樣靜靜地躺著,像睡著了一般欧宜。 火紅的嫁衣襯著肌膚如雪坐榆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天冗茸,我揣著相機(jī)與錄音席镀,去河邊找鬼。 笑死夏漱,一個胖子當(dāng)著我的面吹牛豪诲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播挂绰,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼屎篱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了葵蒂?” 一聲冷哼從身側(cè)響起交播,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎践付,沒想到半個月后秦士,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荔仁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年伍宦,在試婚紗的時候發(fā)現(xiàn)自己被綠了芽死。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡次洼,死狀恐怖关贵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卖毁,我是刑警寧澤揖曾,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站亥啦,受9級特大地震影響炭剪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜翔脱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一奴拦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧届吁,春花似錦错妖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亮蛔,卻和暖如春痴施,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背究流。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工辣吃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梯嗽。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓齿尽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親灯节。 傳聞我的和親對象是個殘疾皇子循头,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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