阮一峰關(guān)于require.js用法的筆記

require.js的用法 - 阮一峰的網(wǎng)絡(luò)日志

現(xiàn)在官網(wǎng)上下載require.js,

1 . 在body底部加載<script src="js/require.js" defer sync="true"></script>

2 . 在加載頁面的入口js<script src="js/main.js" data-main= "js/main"></script>

3 . main.js的寫法,如果main.js不依賴其他模塊司致,直接在main.js文件里寫代碼;

4 . 如果main.js依賴其他模塊轻抱,在main.js的頂部,require( [' jquery '] , function($){

} ?) ?旦部; jquery.js函數(shù)需在和main.js相同的目錄文件下

require接受兩個(gè)參數(shù)祈搜,第一個(gè)參數(shù)是一個(gè)數(shù)組,是該模塊依賴的模塊士八,第二個(gè)參數(shù)是回調(diào)函數(shù)容燕,當(dāng)依賴的模塊加載完成后,以參數(shù)的形式參入回調(diào)函數(shù)中婚度,供該模塊使用

6 . ?require引入模塊的用法:

????????6.1 ? ?直接( jquery.js | underscore.js | backbone.js ?和main.js在同一個(gè)目錄文件下 ?)

????????require( ?[ ' jquery' , 'underscore' , ' backbone ' ?] ?, function( $ , _ , Backbone ? ) ?{

? ? ? ? ? ? //some code

????????})

?????????6.2 ? ? 在模塊的頂部配置require的配置項(xiàng)來指定依賴模塊的位置: paths屬性指定各個(gè)依賴模塊的路徑 (和main.js在項(xiàng)目的目錄下)

? ? ? ? ? ? ? ? require.config({

    ????????????paths: {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"jquery": "jquery.min",

????????????????????????????????????"underscore": "underscore.min",

????????????????????????????????????"backbone": "backbone.min"

    ????????}

  ????????});

? ? (和main.js在不同的目錄下 ?js/lis) ?不用加.js

?????????????????require.config({

    ????????????paths: {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"jquery": "lis/jquery.min",

????????????????????????????????????"underscore": "lis/underscore.min",

????????????????????????????????????"backbone": "lis/backbone.min"

    ????????}

  ????????});

或是

? ???????????require.config({

? ? ? ? ? ? ? ? ? ? ? ? ? ? baseUrl ?: " js/lis ",

    ????????????paths: {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"jquery": "jquery.min",

????????????????????????????????????"underscore": "underscore.min",

????????????????????????????????????"backbone": "backbone.min"

    ????????}

  ????????});

? ? ? ? 6.3 如果另外的模塊在另外的主機(jī)上蘸秘,

? ??????????require.config({

    ????????????paths: {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min",

  ????????});

7 . require.js要求每個(gè)模塊都是獨(dú)立的文件,如果加載的模塊較多蝗茁,會(huì)發(fā)出多次http請(qǐng)求醋虏,影響網(wǎng)頁速度,因此require.js提供了優(yōu)化工具哮翘,當(dāng)模塊部署完畢后颈嚼,可以用這個(gè)工具將多個(gè)模塊合并在一個(gè)文件中,減少http請(qǐng)求

8.require.js加載的模塊饭寺,符合ADM規(guī)范 阻课,因此模塊需按照ADM標(biāo)準(zhǔn)來寫 叫挟,模塊必須采用特定的define()函數(shù)來定義,

? ? 8.1 如果一個(gè)模塊不依賴其他模塊柑肴,則直接寫在define()函數(shù)之中霞揉,

? ? ? ? ? ? define(function(){

????????????????????var add = function (x,y){

????????????     return x+y;

? ? ? ? ? ? ? ? ? ? ? ?};

????????????????????????return {

???????????????????????????? add: add

???????????????????? };

????????????});

? ? 8.2 模塊要依賴其他模塊 旬薯,define()函數(shù)的第一個(gè)參數(shù)必須是一個(gè)數(shù)組晰骑,指明該模塊的依賴性 ?,當(dāng)require()函數(shù)加載下面這個(gè)模塊的時(shí)候绊序,就會(huì)先加載myLib.js文件硕舆。

????????????define(['myLib'], function(myLib){

    ????????function foo(){

      ????????myLib.doSomething();

    ????????}

    ????????return {

     ???????? foo : foo

    ????????};

  ????????});

9 . 加載非規(guī)范模塊: (jquery符合AMD規(guī)范) ,加載非規(guī)范模塊時(shí)骤公,要在加載之前要定義它們的特征抚官,

????????????????require.config({

????????????????????????????shim: {

????????????????????????????????'underscore':{

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????exports: '_'

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?},

????????????????????????????????'backbone': {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????deps: ['underscore', 'jquery'],

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????exports: 'Backbone'

????????????????????????????????}

    ????????????}

  ????????????});

require.config()接受一個(gè)配置對(duì)象,這個(gè)對(duì)象除了有前面說過的paths屬性之外阶捆,還有一個(gè)shim屬性凌节,專門用來配置不兼容的模塊。具體來說洒试,每個(gè)模塊要定義(1)exports值(輸出的變量名)倍奢,表明這個(gè)模塊外部調(diào)用時(shí)的名稱;(2)deps數(shù)組垒棋,表明該模塊的依賴性卒煞。

例如jquery的插件可以這樣定義

????????????require.config({

????????????????????????????shim: {

????????????????????????????????'jquery.scroll': {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????deps: [ 'jquery'],

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????exports: 'jQuery.fn.scroll'

????????????????????????????????}

    ????????????}

  ????????????});

10 . require的其他插件

domready插件,可以讓回調(diào)函數(shù)在頁面DOM結(jié)構(gòu)加載完成后再運(yùn)行叼架,

require(['domready!'], function (doc){

    // called once the DOM is ready

  });

text和image插件畔裕,則是允許require.js加載文本和圖片文件。

define([

    'text!review.txt',

    'image!cat.jpg'

],

function(review,cat){

      console.log(review);

      document.body.appendChild(cat);

    }

  );

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乖订,一起剝皮案震驚了整個(gè)濱河市扮饶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乍构,老刑警劉巖甜无,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蜡吧,居然都是意外死亡毫蚓,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門昔善,熙熙樓的掌柜王于貴愁眉苦臉地迎上來元潘,“玉大人,你說我怎么就攤上這事君仆◆娓牛” “怎么了牲距?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)钥庇。 經(jīng)常有香客問我牍鞠,道長(zhǎng),這世上最難降的妖魔是什么评姨? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任难述,我火速辦了婚禮,結(jié)果婚禮上吐句,老公的妹妹穿的比我還像新娘胁后。我一直安慰自己,他們只是感情好嗦枢,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布攀芯。 她就那樣靜靜地躺著,像睡著了一般文虏。 火紅的嫁衣襯著肌膚如雪侣诺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天氧秘,我揣著相機(jī)與錄音年鸳,去河邊找鬼。 笑死敏储,一個(gè)胖子當(dāng)著我的面吹牛阻星,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播已添,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼妥箕,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了更舞?” 一聲冷哼從身側(cè)響起畦幢,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缆蝉,沒想到半個(gè)月后宇葱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刊头,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年黍瞧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片原杂。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡印颤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出穿肄,到底是詐尸還是另有隱情年局,我是刑警寧澤际看,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站矢否,受9級(jí)特大地震影響仲闽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜僵朗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一赖欣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧衣迷,春花似錦畏鼓、人聲如沸酱酬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽膳沽。三九已至汗菜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挑社,已是汗流浹背陨界。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痛阻,地道東北人菌瘪。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像阱当,于是被迫代替她去往敵國(guó)和親俏扩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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