前言:以前在項目中用過require.js,可是因爲趕進度,整個架子又是別人搭建的,沒有具體的去理解模塊化變成究竟是怎麼一回事,如今趁着有空好好的理解記錄下java
1.首先,爲何使用模塊化編程?編程
爲方便文件管理、增長複用,咱們須要細化JS文件,每一個文件負責單一職能,稱之爲模塊,明確每一個文件的職能,當交互功能較複雜時,引用的文件也越加龐大,此時咱們就須要模塊化管理。瀏覽器
2.模塊化編程的規範及實現異步
模塊化編程目前存在兩種規範,一種是服務端的CommonJS,另外一種是客戶端的AMDide
2.1.CommonJS模塊化
是一種規範,相似java中的interface函數
require - 用來引入依賴requirejs
export - 用來導出模塊,包括標識符(identifier)和模塊內容(contents)ui
問題在於CommonJS的這個Modules規範設計之初是爲了server端設計的,它是一個同步的模式。可是這種模式並不適合於瀏覽器端,你們設想一下若是瀏覽器同步模式一個一個加載模塊,那麼打開將會變得很是的慢。設計
2.2.AMD
是"Asynchronous Module Definition"的縮寫,意思就是"異步模塊定義",是CommonJS的一種實現,它最大的特色就是能夠異步的方式加載模塊,具體的不一樣在於AMD有一個define函數,它可讓當前模塊運行時先加載當前模塊所依賴的模塊
define(['dep1','dep2'],function(dep1,dep2){
//內部只能使用制定的模塊
return function(){};
});
2.3.CMD
也是CommonJS的一種實現理念爲須要時再執行,即按需加載
define(function(require,exports,module){
//此處若是須要某XX模塊,能夠引入
var xx=require('XX');
});
3.require.js
實際上require.js實現了AMD與CMD。項目中大多使用這個。具體怎麼用就很少說了
http://www.requirejs.cn/