AMD_CMD_RequireJS

1: 為什么要使用模塊化局齿?

模塊化可以使代碼低耦合,功能模塊直接不相互影響雁芙。

1.可維護(hù)性:根據(jù)定義轧膘,每個(gè)模塊都是獨(dú)立的。良好設(shè)計(jì)的模塊會(huì)盡量與外部的代碼撇清關(guān)系兔甘,以便于獨(dú)立對(duì)其進(jìn)行改進(jìn)和維護(hù)谎碍。維護(hù)一個(gè)獨(dú)立的模塊比起一團(tuán)凌亂的代碼來(lái)說(shuō)要輕松很多。

2.命名空間:在JavaScript中洞焙,最高級(jí)別的函數(shù)外定義的變量都是全局變量(這意味著所有人都可以訪問(wèn)到它們)椿浓。也正因如此,當(dāng)一些無(wú)關(guān)的代碼碰巧使用到同名變量的時(shí)候闽晦,我們就會(huì)遇到“命名空間污染”的問(wèn)題。

3.可復(fù)用性:現(xiàn)實(shí)來(lái)講提岔,在日常工作中我們經(jīng)常會(huì)復(fù)制自己之前寫過(guò)的代碼到新項(xiàng)目中仙蛉。

2: CMD、AMD碱蒙、CommonJS 規(guī)范分別指什么荠瘪?有哪些應(yīng)用

Asynchronous Module Definition _(AMD)/(異步模塊定義)
它推崇依賴前置,采用異步方式加載模塊赛惩,模塊的加載不影響它后面語(yǔ)句的運(yùn)行哀墓。所有依賴這個(gè)模塊的語(yǔ)句,都定義在一個(gè)回調(diào)函數(shù)中喷兼,等到加載完成之后篮绰,這個(gè)回調(diào)函數(shù)才會(huì)運(yùn)行。
特點(diǎn):
1.依賴前置,需要在定義的時(shí)候季惯,寫好需要的依賴吠各。應(yīng)用有require.js
2.多個(gè)JS有依賴關(guān)系。被依賴的JS需要早于依賴它的文件提前加入勉抓。
3.JS加載的時(shí)候贾漏,頁(yè)面會(huì)停止渲染。加載的文件越多藕筋。頁(yè)面失去響應(yīng)的時(shí)間越長(zhǎng)纵散。
應(yīng)用:require.js

//定義模塊:
  define(id ?, dependencies?, function)
-----------------------------------------------
//id:可選參數(shù),用來(lái)定義模塊標(biāo)識(shí)。如果沒(méi)有寫隐圾,就用文件名伍掀。
//denpendencies:當(dāng)前的模塊依賴的模塊,數(shù)組形式暇藏。
//function:執(zhí)行的函數(shù)
//加載模塊
  require([dependencies], function)
//---------------------------------------------
//dependencies:當(dāng)前模塊需要的依賴的模塊硕盹。
//function:回調(diào)函數(shù),在模塊加載完了后叨咖,會(huì)被執(zhí)行瘩例。
//require是異步執(zhí)行啊胶。在依賴模塊沒(méi)有被加載完。是不會(huì)執(zhí)行回調(diào)函數(shù)的垛贤。同時(shí)瀏覽器不會(huì)失去響應(yīng)焰坪。

Common Module Definition ——(CMD)
通用模塊定義,是一種模塊定義方式和模塊加載方式的規(guī)范
依賴就近,需要的時(shí)候再引入這個(gè)依賴項(xiàng)聘惦,用的時(shí)候再require某饰。
推崇一個(gè)文件一個(gè)模塊,所以經(jīng)常將文件名作為模塊id
因推崇依賴就近善绎,所以一般不在define的參數(shù)中寫依賴黔漂,在factory中寫。
應(yīng)用:sea.js

define(function(require,exports,module){})
//require:獲取其他的模塊提供的接口禀酱。
//exports:對(duì)外提供模塊的接口炬守。
//module是個(gè)對(duì)象,上面存儲(chǔ)了與當(dāng)前模塊相關(guān)的屬性和方法

CommonJS
1-.一個(gè)單獨(dú)的文件就是一個(gè)模塊剂跟,每個(gè)模塊都是一個(gè)單獨(dú)的作用域
在模塊內(nèi)部定義的變量减途,無(wú)法被其他模塊讀取,除非定義為global對(duì)象的屬性
2-.模塊輸出:模塊只有一個(gè)出口曹洽,module.exports對(duì)象鳍置,我們需要把模塊希望輸出的內(nèi)容放入該對(duì)象
3-.加載模塊:加載模塊使用require方法,該方法讀取一個(gè)文件并執(zhí)行送淆,返回 文件內(nèi)部的module.exports對(duì)象税产,如果請(qǐng)求的模塊不能返回,那么”require”必須拋出一個(gè)錯(cuò)誤偷崩。
應(yīng)用:服務(wù)器端

3: 使用 requirejs 完善入門任務(wù)15砖第,包括如下功能:

 1. 首屏大圖為全屏輪播
 2. 有回到頂部功能
 3. 圖片區(qū)使用瀑布流布局(圖片高度不一),下部有加載更多按鈕环凿,點(diǎn)擊加載更多會(huì)加載更多數(shù)據(jù)(數(shù)據(jù)在后端 mock)
 4.  使用 r.js 打包應(yīng)用
  1. 先把獨(dú)立的效果手動(dòng)封裝模塊化...(抽象)
  2. 再利用 requireJs 命令壓縮..Command:r.js -o build.js
  3. 應(yīng)用到文檔.

index.js

define(['jquery','component/carousel','component/goTop','component/news'
],function($,carousel,GoTop,News){
  carousel.init($('.carousel'));
  new GoTop();
  new News($('.container'));
})

main.js

      requirejs.config({
        baseUrl: '../js',    //找到j(luò)s目錄
        paths: {
          'jquery': 'lib/jquery-3.2.1.min'
        }
      });
      requirejs(['app/index']);   //js/app/index.js

build.js

({
  baseUrl: "../js",    //找到j(luò)s目錄
  paths: {
    'jquery': './lib/jquery-3.2.1.min'
  },
  name: "app/main",     //找到main.js
  out: "./index.merge.min.js"    //合并文件輸出到那
})

code
代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梧兼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子智听,更是在濱河造成了極大的恐慌羽杰,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件到推,死亡現(xiàn)場(chǎng)離奇詭異考赛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)莉测,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門颜骤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人捣卤,你說(shuō)我怎么就攤上這事忍抽“诵ⅲ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵鸠项,是天一觀的道長(zhǎng)干跛。 經(jīng)常有香客問(wèn)我,道長(zhǎng)祟绊,這世上最難降的妖魔是什么楼入? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮牧抽,結(jié)果婚禮上嘉熊,老公的妹妹穿的比我還像新娘。我一直安慰自己扬舒,他們只是感情好阐肤,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著呼巴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪御蒲。 梳的紋絲不亂的頭發(fā)上衣赶,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音厚满,去河邊找鬼府瞄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛碘箍,可吹牛的內(nèi)容都是我干的遵馆。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼丰榴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼货邓!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起四濒,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤换况,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后盗蟆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體戈二,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年喳资,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了觉吭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仆邓,死狀恐怖鲜滩,靈堂內(nèi)的尸體忽然破棺而出伴鳖,到底是詐尸還是另有隱情,我是刑警寧澤绒北,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布黎侈,位于F島的核電站,受9級(jí)特大地震影響闷游,放射性物質(zhì)發(fā)生泄漏峻汉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一脐往、第九天 我趴在偏房一處隱蔽的房頂上張望休吠。 院中可真熱鬧,春花似錦业簿、人聲如沸瘤礁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)柜思。三九已至,卻和暖如春巷燥,著一層夾襖步出監(jiān)牢的瞬間赡盘,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工缰揪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留陨享,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓钝腺,卻偏偏與公主長(zhǎng)得像抛姑,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子艳狐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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

  • 為什么要使用模塊化? 最主要的目的:解決命名沖突依賴管理 其他價(jià)值提高代碼可讀性代碼解耦蒜茴,提高復(fù)用性 CMD星爪、AM...
    Eazer閱讀 652評(píng)論 3 1
  • 題目1: 為什么要使用模塊化? 最主要的目的:1.解決命名沖突2.依賴管理其他價(jià)值:1.提高代碼可讀性2.代碼解耦...
    saintkl閱讀 309評(píng)論 0 0
  • 題目1: 為什么要使用模塊化粉私? 解決命令沖突 依賴管理 代碼解耦顽腾,提高代碼的重用性 提高代碼的可讀性參考 題目2:...
    Komolei閱讀 243評(píng)論 0 0
  • 題目1: 為什么要使用模塊化? 可以解決命名沖突 管理依賴 提高代碼的可讀性 代碼解耦,提高代碼的復(fù)用性 題目2:...
    clark124閱讀 154評(píng)論 0 0
  • 有時(shí)候我特別頹抄肖,什么都不想做久信。懶惰,退縮漓摩,覺(jué)得什么都沒(méi)有意思裙士,同時(shí)無(wú)比厭惡這樣的自己,忍耐著等待恢復(fù)精神管毙。興趣來(lái)時(shí)...
    hvalt閱讀 133評(píng)論 0 0