客戶端模塊化規(guī)范之AMD

特點:異步加載規(guī)范
語法:
  • 定義模塊
define(function () {
  return module
})

define(['module1', 'module2'], function (module1, module2) {
  return module
})
  • 導入模塊
requireJs(['module1', 'module2'], function (module1, module2) {
  // to do something
})
使用的標準庫requireJs

示例目錄機構如下:


image.png

1留拾、index.html引入模塊主文件:

<!DOCTYPE html>
<html>
<head>
    <title>AMD模塊規(guī)范</title>
</head>
<body>

<!-- data-main: 表示指定主模塊文件傅联,一定要設置5省!喂饥! -->
<script type="text/javascript" src="js/lib/require.js" data-main="js/app.js"></script>
</body>
</html>

2耳标、編寫符合規(guī)范的自定義模塊module1.js和module2.js

// 定義一個沒有依賴的模塊
define(() => {
    const logMessage = () => `這是一個沒有依賴的模塊`;
    return {
        logMessage
    };
});
// 定義一個有依賴的模塊
// requirejs.config中配置的模塊名稱進行模塊引入,模塊參數對應數組順序
define('module2', ['module1'], (module1) => {
    const message = '這是一個有依賴的模塊';
    const showMessage = () => console.log(message, module1.logMessage());
    return { showMessage };
});

3扰柠、編寫模塊的主入口文件app.js

// 這個是主模塊,其他模塊在此導入
// 引入模塊前需要進行一些基礎配置
requirejs.config({
    // baseUrl: 'js/', // 基礎路徑的配置疼约,指定所有模塊的統一路徑
    paths: {
        module1: 'module/module1',
        module2: 'module/module2',
        /**
            說明:
            1卤档、paths中key的值代表這個模塊,在其他地方使用模塊時用這個名字就可以程剥;
            2劝枣、value代碼模塊路徑,一定要省略后綴.js
        */
        jquery: 'lib/jquery-3.6.0',
        underscore: 'lib/underscore' // 這里將underscore中amd實現代碼注釋织鲸,使其成為不符合規(guī)范的模塊
    },
    shim: {
        underscore: {
            exports: '_',
            // deps: ['jquery']
        }
        /*
            為了解決沒有實現amd規(guī)范的模塊問題舔腾。
            1、exports的值需要和該模塊實際暴露的值類型相同搂擦,比如underscore實際暴露的為對象稳诚;
            2、deps是該模塊所需要的依賴瀑踢。
        */
    }
});

// 導入模塊
requirejs(['module2', 'jquery', 'underscore'], (module2, $, _) => {
    module2.showMessage();
    $('body').css('background', 'lightblue');
    const result = _.map([1, 2, 3], item => item * 3);
    console.log('result: ', result)
});
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末扳还,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子橱夭,更是在濱河造成了極大的恐慌氨距,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棘劣,死亡現場離奇詭異衔蹲,居然都是意外死亡,警方通過查閱死者的電腦和手機呈础,發(fā)現死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門舆驶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人而钞,你說我怎么就攤上這事沙廉。” “怎么了臼节?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵撬陵,是天一觀的道長。 經常有香客問我网缝,道長巨税,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任粉臊,我火速辦了婚禮草添,結果婚禮上,老公的妹妹穿的比我還像新娘扼仲。我一直安慰自己远寸,他們只是感情好抄淑,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著驰后,像睡著了一般肆资。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上灶芝,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天郑原,我揣著相機與錄音,去河邊找鬼夜涕。 笑死犯犁,一個胖子當著我的面吹牛,可吹牛的內容都是我干的钠乏。 我是一名探鬼主播栖秕,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼晓避!你這毒婦竟也來了簇捍?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤俏拱,失蹤者是張志新(化名)和其女友劉穎暑塑,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體锅必,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡事格,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了搞隐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驹愚。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖劣纲,靈堂內的尸體忽然破棺而出逢捺,到底是詐尸還是另有隱情,我是刑警寧澤癞季,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布劫瞳,位于F島的核電站,受9級特大地震影響绷柒,放射性物質發(fā)生泄漏志于。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一废睦、第九天 我趴在偏房一處隱蔽的房頂上張望伺绽。 院中可真熱鬧,春花似錦、人聲如沸憔恳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钥组。三九已至,卻和暖如春今瀑,著一層夾襖步出監(jiān)牢的瞬間程梦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工橘荠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留屿附,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓哥童,卻偏偏與公主長得像挺份,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子贮懈,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容