1. 程式人生 > >JavaScript模塊化編程之require.js與sea.js

JavaScript模塊化編程之require.js與sea.js

新的 fin 可能 關鍵字 個數 們的 文件 頁面 停止

個人傾向於require.js

AMD 是 RequireJS 在推廣過程中對模塊定義的規範化產出。
CMD 是 SeaJS 在推廣過程中對模塊定義的規範化產出。
類似的還有 CommonJS Modules/2.0 規範,是 BravoJS 在推廣過程中對模塊定義的規範化產出。
還有不少?? AMD 即Asynchronous Module Definition,中文名是異步模塊定義的意思。 CMD 即Common Module Definition通用模塊定義,CMD規範是國內發展出來的,就像AMD有個requireJS,CMD有個瀏覽器的實現SeaJS,SeaJS要解決的問題和requireJS一樣,只不過在模塊定義方式和模塊加載(可以說運行、解析)時機上有所不同

requireJS主要解決兩個問題

1、多個js文件可能有依賴關系,被依賴的文件需要早於依賴它的文件加載到瀏覽器
2、js加載的時候瀏覽器會停止頁面渲染,加載文件越多,頁面失去響應時間越長

1.首先原理上的區別

sea.js遵循CMD規範.書寫方式類似node.js的書寫模板代碼.依賴的自動加載,配置的簡潔清晰.說白了就是懶加載.

require.js遵循AMD規範,CMD和AMD基本相同,最大的區別是就CMD是懶加載,AMD是預加載.

簡單來說,就是sea.js屬於懶加載,require.js屬於預加載.

在這裏,順便擴展一下預加載和懶加載的優缺點

預加載:當第一次訪問時將所有的文件加載出來

優點:第一次訪問完成以後, 再次訪問的速度會很快

缺點:第一次加載頁面要等待很久.

懶加載:使用的時候才會加載對應的文件.

優點:第一次訪問速度相對快點

缺點:再訪問其他新的模塊時速度會變慢.

2.書寫上面的區別

都是用define來定義一個模板.通過require,exports,module三個參數來調動函數.

基本上他們的用法是大同小異的.不過要兩點較大的區別是需要大家去註意的:

1)sea.js使用模塊時用方法seajs.use,而require.js直接用require關鍵字

2)sea.js只使用一個模塊時可以只傳入一個字符串,但是require傳入的必須是一個數組.

JavaScript模塊化編程之require.js與sea.js