奔跑吧修己,requireJS

女神鎮(zhèn)樓

requeryJS在前端模塊化的地位,就好像迪麗熱巴在我心中的地位(癡漢臉_

我們都知道迎罗,寫一個(gè)功能復(fù)雜的頁面睬愤,例如有一個(gè)輪播功能,一個(gè)回到頂部纹安,一個(gè)曝光加載功能尤辱。這三個(gè)功能組件寫在一起代碼復(fù)雜程度可以媲美老孫給我家接的網(wǎng)線。

于是厢岂,有些人考慮將三個(gè)組件分別寫在三個(gè)js文件中光督,然后統(tǒng)一使用 <script src=' '> 來進(jìn)行調(diào)用。但是問題來了咪笑,在調(diào)用過程中可帽,需要考慮調(diào)用順序,否則會出現(xiàn)報(bào)錯窗怒。

這個(gè)時(shí)候映跟,requireJS登場。我們只需要在代碼中加入 <script src='require.js' data-main='main.js'></script> 即可扬虚。這個(gè)標(biāo)簽中努隙,src引用的是require.js文件,加載改文件之后會自動尋找data-main的鏈接作為主程序入口文件辜昵。

ok荸镊,現(xiàn)在requireJS已經(jīng)被引用,也設(shè)定好了主程序入口文件main.js,那么躬存,主程序如何寫呢张惹?

首先,我們的目錄層級是這樣的 :

main.js:

//配置:
requirejs.config({
  //設(shè)置根路徑
  baseURL: 'js/lib',
  //設(shè)置特殊路徑
  paths:{
    app: '../app'
  }
})

//正式調(diào)用:
requirejs(['jquery','canvas','app/sub'],function($,canvas,sub){
  具體的實(shí)現(xiàn)過程岭洲。宛逗。。
})

或者直接引用一個(gè)文件而不做處理:

//配置:
requirejs.config({
  //設(shè)置根路徑
  baseURL: 'www/js',
  //設(shè)置特殊路徑
  paths:{
    app: '../app'
  }
})

requirejs(['app/sub'])

此時(shí)盾剩,sub.js的內(nèi)容:

//AMD:
define(['jquery','com/a','com/b'],function($,a,b){
  $('./a')
})
//CMD:
define(function(require,exports,module){
  var jquery = require('jquery');

})

光說不練假把式雷激,動手實(shí)操

實(shí)操的目錄結(jié)構(gòu):

html部分:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>requireJS練手</title>
    <style media="screen">
      .main{
        background-color: red;
        width: 500px;
        height: 500px;
        margin: 0 auto;
        position: relative;
      }
      .box{
        width: 300px;
        height: 300px;
        background-color: #fff;
        position: absolute;
        top: 50%;
        left: 50%;
        margin-top: -150px;
        margin-left: -150px;
      }
    </style>
  </head>
  <body>
    <div class="main">
      <div class="box">
        <button type="button" class="btn1">藍(lán)色</button>
        <button type="button" class="btn2">綠色</button>
        <button type="button" class="btn3">黃色</button>

      </div>
    </div>
  <script src="./js/lib/require.js" data-main="./js/main.js" charset="utf-8"></script>
  </body>
</html>

主程序入口文件:

requirejs.config({
  baseURL:'./js',
  paths:{
    jquery: './lib/jquery-3.2.1.min'
  }
})

requirejs(['./app/app'])

引用的主要js文件:

//  CMD規(guī)范:
define(function(require,exports,module){
  var blue = require('com/blue');
  var yellow = require('com/yellow');
  var green = require('com/green');
  blue();
  yellow();
  green();
})

// AMD規(guī)范:
define(['jquery','com/blue','com/green','com/yellow'],function($,blue,green,yellow){
  blue();
  green();
  yellow();
})

組件部分:

define(['jquery'],function($){

  function turnBlue(){
    $('.btn1').on('click',function(){
      $('.box').css('background-color','blue')
    })
  }
  
  return turnBlue;
})

實(shí)現(xiàn)效果

總結(jié)(按照順序)

  1. 在HTML文件中引用一個(gè)帶有data-main的script的標(biāo)簽,類似<script src="./js/lib/require.js" data-main="./js/main.js" charset="utf-8"></script>告私。
  • src中引用require.js文件
  • data-main引用主程序入口文件
  1. 在主程序入口文件中屎暇,需要有配置命令。即requirejs.config驻粟。
  • requirejs.config是一個(gè)對象根悼。主要有baseURL,paths屬性蜀撑。
  • baseURL設(shè)置的是一個(gè)根目錄番挺,是相對于HTML所在目錄為依托。
  • paths設(shè)置的是baseURL之外的特殊路徑屯掖,是相對于baseURL為依托玄柏。
  1. 組件一定要return出來,否則沒卵用贴铜。組件部分就是在組件外加一個(gè)殼粪摘,這個(gè)殼是這樣滴:
define(['jquery'],function($){

    組件內(nèi)容部分。绍坝。徘意。

  return turnBlue;
})
解釋給小白聽,以便更好理解帶土當(dāng)時(shí)的痛苦:血輪眼每一次升級的代價(jià)轩褐,就是親手殺死至親之人椎咧。帶土將琳和一只血輪眼托付給卡卡西,卻眼見著他殺死自己的摯愛把介,血輪眼連跳三級直接升為最終版的萬花筒勤讽,當(dāng)時(shí)他承受了多么大的打擊啊拗踢!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脚牍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子巢墅,更是在濱河造成了極大的恐慌诸狭,老刑警劉巖券膀,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異驯遇,居然都是意外死亡芹彬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門叉庐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雀监,“玉大人,你說我怎么就攤上這事眨唬。” “怎么了好乐?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵匾竿,是天一觀的道長。 經(jīng)常有香客問我蔚万,道長岭妖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任反璃,我火速辦了婚禮昵慌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淮蜈。我一直安慰自己斋攀,他們只是感情好橄维,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布邢滑。 她就那樣靜靜地躺著,像睡著了一般撤嫩。 火紅的嫁衣襯著肌膚如雪裁眯。 梳的紋絲不亂的頭發(fā)上鹉梨,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機(jī)與錄音穿稳,去河邊找鬼存皂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛逢艘,可吹牛的內(nèi)容都是我干的旦袋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼它改,長吁一口氣:“原來是場噩夢啊……” “哼猜憎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起搔课,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胰柑,失蹤者是張志新(化名)和其女友劉穎截亦,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柬讨,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡崩瓤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了踩官。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片却桶。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蔗牡,靈堂內(nèi)的尸體忽然破棺而出颖系,到底是詐尸還是另有隱情,我是刑警寧澤辩越,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布嘁扼,位于F島的核電站,受9級特大地震影響黔攒,放射性物質(zhì)發(fā)生泄漏趁啸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一督惰、第九天 我趴在偏房一處隱蔽的房頂上張望不傅。 院中可真熱鬧,春花似錦赏胚、人聲如沸访娶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽震肮。三九已至,卻和暖如春留拾,著一層夾襖步出監(jiān)牢的瞬間戳晌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工痴柔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沦偎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓咳蔚,卻偏偏與公主長得像豪嚎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子谈火,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理侈询,服務(wù)發(fā)現(xiàn),斷路器糯耍,智...
    卡卡羅2017閱讀 134,693評論 18 139
  • RequireJS路徑詳解(深入理解) 0. 前言 由于官方文檔說明甚少扔字,導(dǎo)致RequireJS的路徑解析邏輯就像...
    大貓Kevin閱讀 9,384評論 1 11
  • 導(dǎo)語: 之前一直有聽說RequireJS囊嘉,但是一直都沒機(jī)會去了解,只知道它是一個(gè)給js做模塊化的API革为。最近在做R...
    wuqke閱讀 40,928評論 11 78
  • 參考資料 RequireJS 中文網(wǎng)Javascript模塊化編程(三):require.js的用法——阮一峰 前...
    BeYanJin閱讀 7,085評論 2 12
  • 一扭粱、UITabBarController,繼承并封裝UIViewController,原理是每次點(diǎn)擊之后先隱藏上一...
    胡蘿卜2大爺er閱讀 1,866評論 0 3