AMD_CMD_RequireJS

1. 為什么要使用模塊化?

模塊的由來:
嵌入網(wǎng)頁的JS代碼越來越龐大,越來越像桌面程序躯喇,需要一個團隊去分工協(xié)作,進行管理和測試等等硝枉,為了更好的管理網(wǎng)頁的業(yè)務(wù)邏輯廉丽,產(chǎn)生了模塊化編程的理念。
模塊化有以下好處:

  • 解決命名的沖突
  • 實現(xiàn)依賴管理
  • 提高代碼可讀性
  • 代碼解耦妻味,提高復(fù)用性

2. CMD正压、AMD、CommonJS 規(guī)范分別指什么责球?有哪些應(yīng)用

CMD

通用模塊定義common module definition 通過 exports 暴露接口焦履。這意味著不需要命名空間了,更不需要全局變量雏逾。這是一種徹底的命名沖突解決方案嘉裤。 通過 require 引入依賴。這可以讓依賴內(nèi)置栖博,開發(fā)者只需關(guān)心當(dāng)前模塊的依賴屑宠,其他事情 Sea.js 都會自動處理好。

//acfun.js
define(function(require, exports) {
  var until = require('./until.js');
  exports.init = function() {
  };
})
// index.html
<script src="sea.js"></script>
<script>
seajs.use('acfun', function(Acfun) {
  Acfun.init();
})
</script>

AMD

AMD 即Asynchronous Module Definition仇让。它是一個在瀏覽器端模塊化開發(fā)的規(guī)范典奉。由于不是JavaScript原生支持躺翻,使用AMD規(guī)范進行頁面開發(fā)需要用到對應(yīng)的庫函數(shù),也就是大名鼎鼎RequireJS卫玖,實際上AMD 是 RequireJS 在推廣過程中對模塊定義的規(guī)范化的產(chǎn)出
主要解決兩個問題:
多個js文件可能有依賴關(guān)系公你,被依賴的文件需要早于依賴它的文件加載到瀏覽器
js加載的時候瀏覽器會停止頁面渲染,加載文件越多假瞬,頁面失去響應(yīng)時間越長

// 定義模塊 myModule.js
define(['dependency'], function() {
  var name = "Hunger";
  function printName() {
    console.log(name);
  }
  return {
  printName:printName
  }
})
// 加載
require(['myModule'], function(e) {
  e.printName();
})

CommonJS

根據(jù)這個規(guī)范陕靠,每個文件就是一個模塊,有自己的作用域笨触。在一個文件里面定義的變量懦傍、函數(shù)、類芦劣,都是私有的粗俱,對其他文件不可見。
每個模塊內(nèi)部虚吟,module變量代表當(dāng)前模塊寸认。這個變量是一個對象,它的exports屬性(即module.exports)是對外的接口串慰。加載某個模塊偏塞,其實是加載該模塊的module.exports屬性。
特點
所有代碼都運行在模塊作用域邦鲫,不會污染全局作用域灸叼。
模塊可以多次加載,但是只會在第一次加載時運行一次庆捺,然后運行結(jié)果就被緩存了古今,以后再加載,就直接讀取緩存結(jié)果滔以。要想讓模塊再次運行捉腥,必須清除緩存,模塊加載的順序是按照其在代碼中出現(xiàn)的順序你画。

// 定義模塊 myModule.js
var x = 5;
var addX = function (value) {
  return value + x;
}
module.exports = {
  x: x,
  addX: addX
};
// 加載
var e = require('./myModule.js');
e.addX(2);

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

 1. 首屏大圖為全屏輪播
 2. 有回到頂部功能
 3. 圖片區(qū)使用瀑布流布局(圖片高度不一),下部有加載更多按鈕坏匪,點擊加載更多會加載更多數(shù)據(jù)(數(shù)據(jù)在后端 mock)
 4.  使用 r.js 打包應(yīng)用

demo
代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拟逮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子适滓,更是在濱河造成了極大的恐慌唱歧,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異颅崩,居然都是意外死亡,警方通過查閱死者的電腦和手機蕊苗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門沿后,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人朽砰,你說我怎么就攤上這事尖滚。” “怎么了瞧柔?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵漆弄,是天一觀的道長。 經(jīng)常有香客問我造锅,道長撼唾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任哥蔚,我火速辦了婚禮倒谷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘糙箍。我一直安慰自己渤愁,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布深夯。 她就那樣靜靜地躺著抖格,像睡著了一般。 火紅的嫁衣襯著肌膚如雪咕晋。 梳的紋絲不亂的頭發(fā)上雹拄,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天,我揣著相機與錄音捡需,去河邊找鬼办桨。 笑死,一個胖子當(dāng)著我的面吹牛站辉,可吹牛的內(nèi)容都是我干的呢撞。 我是一名探鬼主播,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼饰剥,長吁一口氣:“原來是場噩夢啊……” “哼殊霞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起汰蓉,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤绷蹲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祝钢,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡比规,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拦英。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜒什。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖疤估,靈堂內(nèi)的尸體忽然破棺而出灾常,到底是詐尸還是另有隱情,我是刑警寧澤铃拇,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布钞瀑,位于F島的核電站,受9級特大地震影響慷荔,放射性物質(zhì)發(fā)生泄漏雕什。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一拧廊、第九天 我趴在偏房一處隱蔽的房頂上張望监徘。 院中可真熱鬧,春花似錦吧碾、人聲如沸凰盔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽户敬。三九已至,卻和暖如春睁本,著一層夾襖步出監(jiān)牢的瞬間尿庐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工呢堰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抄瑟,地道東北人。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓枉疼,卻偏偏與公主長得像皮假,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子骂维,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,926評論 2 361

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

  • 為什么要使用模塊化猴誊? 最主要的目的:解決命名沖突依賴管理 其他價值提高代碼可讀性代碼解耦,提高復(fù)用性 CMD侮措、AM...
    Eazer閱讀 666評論 3 1
  • 題目1: 為什么要使用模塊化懈叹? 解決命令沖突 依賴管理 代碼解耦,提高代碼的重用性 提高代碼的可讀性參考 題目2:...
    Komolei閱讀 253評論 0 0
  • 題目1: 為什么要使用模塊化萝毛? 模塊的由來:嵌入網(wǎng)頁的JS代碼越來越龐大项阴,越來越像桌面程序,需要一個團隊去分工協(xié)作...
    蕭雪圣閱讀 279評論 0 0
  • 題目1: 為什么要使用模塊化笆包? 最主要的目的:1.解決命名沖突2.依賴管理其他價值:1.提高代碼可讀性2.代碼解耦...
    saintkl閱讀 311評論 0 0
  • 微醺的小白閱讀 93評論 0 0