AMD_CMD_RequireJS

為什么要使用模塊化?

  1. 解決命名沖突
  2. 依賴管理
  3. 提高代碼可讀性
  4. 代碼解耦,提高復用性

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

CommonJS

CommonJS是由NodeJS發揚光大
定義模塊:根據CommonJS規范,一個單獨的文件就是一個模塊。每一個模塊都是一個單獨的作用域,也就是說,在該模塊內部定義的變量,無法被其他模塊讀取,除非定義為global對象的屬性
模塊輸出: 模塊只有一個出口,module.exports對象,我們需要把模塊希望輸出的內容放入該對象
加載模塊: 加載模塊使用require方法,該方法讀取一個文件并執行,返回文件內部的module.exports對象

//定義模塊,文件名為a.js
var people={
  name:'saybye',
  sayname:function(){
    console.log(this.name)
  }
}
module.exports=people

//加載模塊
var p=require('./a')
p.sayname()

AMD

瀏覽器端,加載JavaScript最佳、最容易的方式是在document中插入script 標簽。但腳本標簽天生異步,傳統CommonJS模塊在瀏覽器環境中無法正常加載,所以之后產生了AMD規范
AMD中文名是異步模塊定義的意思。它是一個在瀏覽器端模塊化開發的規范.由于不是JavaScript原生支持,使用AMD規范進行頁面開發需要用到對應的庫函數,也就是大名鼎鼎RequireJS,實際上AMD 是 RequireJS 在推廣過程中對模塊定義的規范化的產出
requireJS主要解決兩個問題

  1. 多個js文件可能有依賴關系,被依賴的文件需要早于依賴它的文件加載到瀏覽器
  2. js加載的時候瀏覽器會停止頁面渲染,加載文件越多,頁面失去響應時間越長
//定義模塊,文件名為a.js
define(['dependency'],function(){
   var name=saybye
    function printName(){
      console.log(name)
    }
    return{
    printName:printName
    }
})

//加載模塊
require(['./a.js'], function (my){
  my.printName(); });

其中例子中
dependency:是一個當前模塊依賴的模塊名稱數組

CMD

CMD 即Common Module Definition通用模塊定義,CMD規范是國內發展出來的,就像AMD有個requireJS,CMD有個瀏覽器的實現SeaJS,SeaJS要解決的問題和requireJS一樣,只不過在模塊定義方式和模塊加載(可以說運行、解析)時機上有所不同
語法:Sea.js 推崇一個模塊一個文件,遵循統一的寫法
CMD 推崇依賴就近,所以一般不在define的參數中寫依賴,在factory中寫

//定義模塊 a.js
define(function(require, exports, module){
var $ = require('jquery.js')
  $('div').addClass('active');
})

//加載模塊
seajs.use(['./a.js'], function(my){
});
```
范例中:
require是一個方法,接受 模塊標識 作為唯一參數,用來獲取其他模塊提供的接口
exports 是一個對象,用來向外提供模塊接口
module 是一個對象,上面存儲了與當前模塊相關聯的一些屬性和方法


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 為什么要使用模塊化? 最主要的目的:解決命名沖突依賴管理 其他價值提高代碼可讀性代碼解耦,提高復用性 CMD、AM...
    Eazer閱讀 693評論 3 1
  • 題目1: 為什么要使用模塊化? 模塊的由來:嵌入網頁的JS代碼越來越龐大,越來越像桌面程序,需要一個團隊去分工協作...
    蕭雪圣閱讀 286評論 0 0
  • 題目1: 為什么要使用模塊化? 解決命名沖突 依賴管理 提高代碼可讀性 代碼解耦,提高復用性 題目2: CMD、A...
    撫年華輕過閱讀 352評論 0 0
  • 讀牌1:多愁善感的圣杯國王;:運籌帷幄的圣杯國王;不高興的圣杯國王;陰郁的圣杯國王;嫉妒的圣杯國王;漂泊在海上的圣...
    回老家養貓閱讀 625評論 0 4
  • 老柳樹,祖宗樹 柳哲 夏日周末,我們一家人興致勃勃地來到京西鳳凰嶺龍泉寺郊游,無意中“邂逅”了兩棵飽經風霜的老柳樹...
    柳志儒閱讀 1,067評論 3 3