AMD_CMD_RequireJS

為什么要使用模塊化?
隨著網(wǎng)站功能逐漸豐富,網(wǎng)頁中的js也變得越來越復雜和臃腫,原有通過script標簽來導入一個個的js文件這種方式已經(jīng)不能滿足現(xiàn)在互聯(lián)網(wǎng)開發(fā)模式,我們需要團隊協(xié)作、模塊復用、單元測試等等一系列復雜的需求。

  • 解決命名沖突
  • 依賴管理
  • 提高代碼可讀性
  • 代碼解耦提高復用性

CMD、AMD、CommonJS 規(guī)范分別指什么?有哪些應用

  • CommonJS
    模塊必須通過 module.exports導出對外的變量或接口,通過require()來導入其他模塊的輸出到當前模塊。
    服務器端的Node.js遵循CommonJS規(guī)范。CommonJS是同步加載模塊,傳統(tǒng)CommonJS模塊在瀏覽器環(huán)境中無法正常加載。
    // moduleA.js  
    module.exports = function( value ){  
        return value * 2;  
    }  


    // moduleB.js  
    var multiplyBy2 = require('./moduleA');  
    var result = multiplyBy2(4);  
  • AMD
    require.js加載的模塊采用AMD規(guī)范。
    適合在瀏覽器環(huán)境異步加載
    并行加載多個模塊
如果一個模塊不依賴其他模塊,那么可以直接定義在define()函數(shù)之中。
      // math.js
      define(function (){
        var add = function (x,y){
          return x+y;
        };
        return {
          add: add
        };
      });
加載方法如下:

      // main.js
      require(['math'], function (math){
        alert(math.add(1,1));
      });

如果這個模塊還依賴其他模塊,將其寫在一個數(shù)組里
當require()函數(shù)加載下面這個模塊的時候,就會先加載myLib.js文件。
define(['myLib'], function(myLib){
    function foo(){
      myLib.doSomething();
    }
    return {
      foo : foo
    };
  });


AMD 是 RequireJS 在推廣過程中對模塊定義的規(guī)范化產(chǎn)出。
推崇依賴前置。

  • CMD規(guī)范

CMD 是 SeaJS 在推廣過程中對模塊定義的規(guī)范化產(chǎn)出。
推崇依賴就近,只有在用到某個模塊的時候再去require

define(function(require, exports, module) {
    var a = require('./a')
    a.doSomething()
    ...
    var b = require('./b')
    b.doSomething()
    ...
})

參考
使用 requirejs 完善入門任務15,包括如下功能:

  1. 首屏大圖為全屏輪播
  2. 有回到頂部功能
  3. 圖片區(qū)使用瀑布流布局(圖片高度不一),下部有加載更多按鈕,點擊加載更多會加載更多數(shù)據(jù)(數(shù)據(jù)在后端 mock)
    4.(可選). 使用 r.js 打包應用

頁面 輪播加載比較慢...
代碼

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 為什么要使用模塊化? 最主要的目的:解決命名沖突依賴管理 其他價值提高代碼可讀性代碼解耦,提高復用性 CMD、AM...
    Eazer閱讀 769評論 3 1
  • 題目1: 為什么要使用模塊化? 模塊的由來:嵌入網(wǎng)頁的JS代碼越來越龐大,越來越像桌面程序,需要一個團隊去分工協(xié)作...
    蕭雪圣閱讀 327評論 0 0
  • 題目1: 為什么要使用模塊化? 解決命名沖突 依賴管理 提高代碼可讀性 代碼解耦,提高復用性 題目2: CMD、A...
    撫年華輕過閱讀 386評論 0 0
  • 第一百二十首 忘年之遇 秋憶濃 總是不會去寫, 那一些最美好的情誼; 窗前那些初...
    山丘qiu閱讀 120評論 0 0
  • 秋風弄,霜漸重,紅減翠收人相送。鳴暮鐘,難入夢,經(jīng)年匆匆,花影重重,痛痛痛。 離歌起,空船去,波光粼粼心潮寂。撿寒...
    Litiller閱讀 434評論 0 3

友情鏈接更多精彩內(nèi)容