關(guān)于模塊化(AMD_CMD_RequireJS)

為什么要使用模塊化办悟?

  • 解決命名沖突
  • 實(shí)現(xiàn)依賴管理
  • 模塊的版本管理
  • 提高可維護(hù)性
  • 前端性能優(yōu)化
  • 跨環(huán)境共享模塊

AMD(Asynchronous Module Definition) 異步模塊定義再沧,AMD是采用異步方式加載模塊卷中,應(yīng)用在require.js挽唉。

/**
 * 書寫方式 
 * require([module], callback);
 * 第一個(gè)參數(shù)[module]塘秦,是一個(gè)數(shù)組建蹄,里面的成員就是要加載的模塊碌更;第二個(gè)參數(shù)callback裕偿,則是加載成功之后的回調(diào)函數(shù)。
 */
// 定義module.js
define(['dependencies'],function(){
    var name = 'Array';
    function printName(){console.log(name)}
    return {printName: pirintName}
})
// 加載模塊
require(['module'],function(module){
    module.printName();
})

CMD(Common Module Definition) 通用模塊定義痛单,CMD是按需加載嘿棘,應(yīng)用在sea.js

/**
 * 書寫方式 
 * define(factory);
 * factory 為函數(shù)時(shí)旭绒,表示是模塊的構(gòu)造方法鸟妙。執(zhí)行該構(gòu)造方法,可以得到模塊向外提供的接口快压。
 * factory 方法在執(zhí)行時(shí)圆仔,默認(rèn)會傳入三個(gè)參數(shù):require、exports 和 module
 * require是一個(gè)方法蔫劣,接受模塊標(biāo)識作為唯一參數(shù)坪郭,用來獲取其他模塊提供的接口
 * exports是一個(gè)對象,用來想外提供模塊接口
 * module是個(gè)對象脉幢,上面存儲了與當(dāng)前模塊相關(guān)的屬性和方法
 */
// 在a.js中使用模塊
define(function(require, exports, module) {
    var $ = require('jquery.js');
    $.each = function(index, el) {
        // 實(shí)現(xiàn)代碼
    };

});
// 在b.js中使用模塊
defind(function(require, exports, module){
    var util = require('./util.js');
    exports.init = function() {
        // 實(shí)現(xiàn)代碼
    };
})

Commonjs 是個(gè)模塊化規(guī)范歪沃,將javascript語言用于服務(wù)器端編程,采用同步加載模塊的方式嫌松。

/**
 * 一個(gè)單獨(dú)的文件就是一個(gè)模塊沪曙,每個(gè)模塊都是一個(gè)單獨(dú)的作用域,在模塊內(nèi)部定義的變量萎羔,無法被其他模塊讀取液走,除非定義為global對象的屬性
 * 加載模塊 加載模塊使用require方法,該方法讀取一個(gè)文件并執(zhí)行贾陷,返回文件內(nèi)部的module.exports對象缘眶,如果請求的模塊不能返回,那么"require"必須拋出一個(gè)錯(cuò)誤髓废。
 * 模塊輸出 module.exports對象巷懈,需要把模塊輸出的內(nèi)容放入該對象
 */

// 模塊定義 model.js
var name = "jirengu";

function printName(){
    console.log(name);
}
function printFullName(firstName){
    console.log(firstName + name);
}
module.exports = {
    printName: printName;
    printFullName: printFullName
}

//加載模塊
var nameModule = require("./model.js");
nameModule.printName();             // "jirengu"
nameModule.printFullName("Hello "); // "Hello jirengu"

使用 requirejs 完善任務(wù),包括如下功能:

  1. 首屏大圖為全屏輪播
  2. 有回到頂部功能
  3. 圖片區(qū)使用瀑布流布局(圖片高度不一)慌洪,下部有加載更多按鈕顶燕,點(diǎn)擊加載更多會加載更多數(shù)據(jù)
  4. 使用 r.js 打包應(yīng)用
    查看源代碼
    預(yù)覽效果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冈爹,隨后出現(xiàn)的幾起案子涌攻,更是在濱河造成了極大的恐慌,老刑警劉巖频伤,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件癣漆,死亡現(xiàn)場離奇詭異,居然都是意外死亡剂买,警方通過查閱死者的電腦和手機(jī)惠爽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞬哼,“玉大人婚肆,你說我怎么就攤上這事∽浚” “怎么了较性?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長结胀。 經(jīng)常有香客問我赞咙,道長,這世上最難降的妖魔是什么糟港? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任攀操,我火速辦了婚禮,結(jié)果婚禮上秸抚,老公的妹妹穿的比我還像新娘速和。我一直安慰自己,他們只是感情好剥汤,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布颠放。 她就那樣靜靜地躺著,像睡著了一般吭敢。 火紅的嫁衣襯著肌膚如雪碰凶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天鹿驼,我揣著相機(jī)與錄音欲低,去河邊找鬼。 笑死蠢沿,一個(gè)胖子當(dāng)著我的面吹牛伸头,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播舷蟀,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼恤磷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了野宜?” 一聲冷哼從身側(cè)響起扫步,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎匈子,沒想到半個(gè)月后河胎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡虎敦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年游岳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了政敢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,435評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胚迫,死狀恐怖喷户,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情访锻,我是刑警寧澤褪尝,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站期犬,受9級特大地震影響河哑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜龟虎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一璃谨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遣总,春花似錦睬罗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至垂券,卻和暖如春花盐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背菇爪。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工算芯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人凳宙。 一個(gè)月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓熙揍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親氏涩。 傳聞我的和親對象是個(gè)殘疾皇子届囚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評論 2 359

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

  • 前端模塊規(guī)范有三種:CommonJs,AMD和CMD。CommonJs用在服務(wù)器端是尖,AMD和CMD用在瀏覽器環(huán)境A...
    linwalker閱讀 41,133評論 6 130
  • 為什么要使用模塊化? 最主要的目的:解決命名沖突依賴管理 其他價(jià)值提高代碼可讀性代碼解耦,提高復(fù)用性 CMD迎瞧、AM...
    Eazer閱讀 663評論 3 1
  • 1. 為什么要使用模塊化夸溶? 什么是模塊化:一個(gè)模塊就是實(shí)現(xiàn)特定功能的文件,有了模塊凶硅,我們就可以更方便地使用別人的...
    饑人谷_楠柒閱讀 1,032評論 0 1
  • 什么是模塊化開發(fā)蜘醋? 前端開發(fā)中,起初只要在script標(biāo)簽中嵌入幾十上百行代碼就能實(shí)現(xiàn)一些基本的交互效果咏尝,后來js...
    半世韶華憶闌珊閱讀 655評論 0 0
  • 你聽取別人的意見,或親近或你喜歡或你覺得你很信任啸罢,永遠(yuǎn)不肯改變自己對特定的人認(rèn)知编检,即使你已經(jīng)有一點(diǎn)點(diǎn)動搖,...
    卜留閱讀 145評論 0 0