傻瓜看的requireJS說(shuō)明書(shū)

開(kāi)始記錄...

1黍檩,我們的目錄結(jié)構(gòu)大概是這樣:

Paste_Image.png

2估蹄,index.html文件內(nèi)容颂碧,加載require庫(kù)文件,看到data-main沒(méi)有类浪,那個(gè)就是我們整個(gè)JS邏輯的開(kāi)始編寫(xiě)地方载城,data-main后面的值一般都是省略.js后綴,可以也寫(xiě)成main.js费就。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>requireJS使用說(shuō)明書(shū)</title>
    <script data-main="main" src="require.js"></script>
</head>
<body>
    使用這個(gè)JS庫(kù)诉瓦,讓模塊之間加載和調(diào)用更加明確。
    1力细,data-main為函數(shù)入口
    2睬澡,define定義模塊
    3,通過(guò)return或者exports返回
    4眠蚂,require.config為配置選項(xiàng)
</body>
</html>

3煞聪,來(lái)瞅瞅main.js里的內(nèi)容,具體看注釋?zhuān)枰⒁獾氖俏覀兊姆祷刂凳呕郏伎家幌聻槭裁词菍?duì)象昔脯。

//定義配置文件
requirejs.config({
    //查找所有模塊的根路徑
    baseUrl: './js',
    //設(shè)置相對(duì)路徑,映射到不能直接在baseUrl下找到的模塊名
    paths:{
        "jquery":"lib/jquery",
        "jquery-private":"lib/jquery-private"
    },
    //為那些沒(méi)有使用 define() 聲明依賴(lài)項(xiàng)、沒(méi)有設(shè)置模塊值,暴露出全局變量
    shim:{
    },
    // 對(duì)于給定的相同的模塊名笛臣,加載不同的模塊云稚,而不是加載相同的模塊。
    map:{
        '*': { 'jquery': 'jquery-private' },
        'jquery-private': { 'jquery': 'jquery' }
    }
});

//main文件為入口捐祠,也就是我們邏輯的開(kāi)始地方
require(["a","b","c","d","e","f","jquery"], function(a,b,c,d,e,f,$) {
    //a文件碱鳞,返回一個(gè)對(duì)象
    var Module_A = a;
    console.log(Module_A.size);

    //b文件,返回一個(gè)函數(shù)
    var Module_B = b;
    Module_B.sayB();

    //c文件踱蛀,依賴(lài)B文件窿给,返回一個(gè)對(duì)象
    var Module_C = c;
    Module_C.sayC();

    //d文件,引入其他的cmd規(guī)范文件率拒,然后重新拼裝我們需要的
    var Module_D = d;
    Module_D();

    //e文件崩泡,引入require,然后調(diào)用其他模塊
    var Module_E = e;
    console.log(Module_E.e);

    //f文件猬膨,引入exports角撞,不通過(guò)return返回
    var Module_F = f;
    console.log(Module_F.f.F);
 //查看jQuery對(duì)象
    console.dir($)
});

4,我們把這幾a,b,c,d,e,f里的JS文件內(nèi)容粘出來(lái)看看

//a.js勃痴,很顯然返回了一個(gè)對(duì)象谒所,鍵值對(duì)。
define({
    color:"red",
    size:12
});
//b.js沛申,定義一個(gè)匿名函數(shù)(下面還有兩個(gè))劣领,這里隨便返回一個(gè)對(duì)象
define(function () {
    var B = "我是B中的一個(gè)字符串變量";
    function sayB(){
        console.log("我是B模塊中的sayB方法");
    }
    return {
        B:B,
        sayB:sayB
    }
});
//c.js,引入b文件依賴(lài)铁材,然后隨便返回一個(gè)對(duì)象
define(["b"],function(b){
    var B = b;
    var C = "我是C的字符串變量";
    return {
        C:C,
        sayC:B.sayB
    } 
});
//d.js尖淘,具體看匿名函數(shù)中的參數(shù)奕锌,把其他模塊弄進(jìn)來(lái)在重新拼裝
define(function(require,exports,module){
    var a = require("a");
    var b = require("b");
    return function(){
        console.log(b.B);
    };
});
//e.js,引入require村生,再調(diào)用其他define的模塊
define(function(require){
    var a = require("a");
    return {
        e:a.color
    }
});
//f.js惊暴,引入exprots模塊,這樣我們可以不用return進(jìn)行返回了
define(['exports'],function(exports){
    exports.f = {F:"我是F的字符串"};
});

5趁桃,對(duì)于那些不沖突(重名辽话,不依賴(lài))的庫(kù),可以通過(guò)paths(配置選項(xiàng)里)直接定義卫病,左邊名字:右邊路徑

6屡穗,對(duì)于依賴(lài)的需要在shim里進(jìn)行重新暴露,eg:

shim: {
        'backbone': {
           //deps需要加載的依賴(lài)項(xiàng)的數(shù)組
            deps: ['underscore', 'jquery'],
           //導(dǎo)出名稱(chēng)
            exports: 'Backbone'
        },
        'underscore': {
            exports: '_'
        },
        'foo': {
            deps: ['bar'],
            exports: 'Foo',
            init: function (bar) {
                return this.Foo.noConflict();
            }
        }
    }
});

具體:http://requirejs.org/docs/api.html#config-shim

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末忽肛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子烂斋,更是在濱河造成了極大的恐慌屹逛,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汛骂,死亡現(xiàn)場(chǎng)離奇詭異罕模,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)帘瞭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)淑掌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蝶念,你說(shuō)我怎么就攤上這事抛腕。” “怎么了媒殉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵担敌,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我廷蓉,道長(zhǎng)全封,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任桃犬,我火速辦了婚禮刹悴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘攒暇。我一直安慰自己土匀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布扯饶。 她就那樣靜靜地躺著恒削,像睡著了一般池颈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钓丰,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天躯砰,我揣著相機(jī)與錄音,去河邊找鬼携丁。 笑死琢歇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的梦鉴。 我是一名探鬼主播李茫,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼肥橙!你這毒婦竟也來(lái)了魄宏?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤存筏,失蹤者是張志新(化名)和其女友劉穎宠互,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體椭坚,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡予跌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了善茎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片券册。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖垂涯,靈堂內(nèi)的尸體忽然破棺而出烁焙,到底是詐尸還是另有隱情,我是刑警寧澤耕赘,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布考阱,位于F島的核電站,受9級(jí)特大地震影響鞠苟,放射性物質(zhì)發(fā)生泄漏乞榨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一当娱、第九天 我趴在偏房一處隱蔽的房頂上張望吃既。 院中可真熱鬧,春花似錦跨细、人聲如沸鹦倚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)震叙。三九已至掀鹅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間媒楼,已是汗流浹背乐尊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留划址,地道東北人扔嵌。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像夺颤,于是被迫代替她去往敵國(guó)和親痢缎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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

  • 導(dǎo)語(yǔ): 之前一直有聽(tīng)說(shuō)RequireJS世澜,但是一直都沒(méi)機(jī)會(huì)去了解独旷,只知道它是一個(gè)給js做模塊化的API。最近在做R...
    wuqke閱讀 40,921評(píng)論 11 78
  • RequireJs已經(jīng)流行很久了寥裂,它提供了以下功能: 聲明不同js文件之間的依賴(lài) 可以按需势告、并行、延時(shí)載入js庫(kù) ...
    小豌豆書(shū)吧閱讀 583評(píng)論 1 1
  • 參考資料 RequireJS 中文網(wǎng)Javascript模塊化編程(三):require.js的用法——阮一峰 前...
    BeYanJin閱讀 7,072評(píng)論 2 12
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,178評(píng)論 25 707
  • 二十多歲不努力經(jīng)營(yíng)自己络拌,該成長(zhǎng)的成長(zhǎng)俭驮,該脫貧的脫貧,卻用來(lái)急著戀愛(ài)和嫁人春贸,結(jié)果呢混萝?三十多歲就被生活瑣事、孩子房子萍恕、...
    丁菇?jīng)?/span>閱讀 236評(píng)論 0 2