SeaJS是一個遵循CommonJS規範的JavaScript模塊加載框架,能夠實現JavaScript的模塊化開發及加載機制。與jQuery等JavaScript框架不一樣,SeaJS不會擴展封裝語言特性,而只是實現JavaScript的模塊化及按模塊加載。SeaJS的主要目的是令JavaScript開發模塊化並能夠輕鬆愉悅進行加載,將前端工程師從繁重的JavaScript文件及對象依賴處理中解放出來,能夠專一於代碼自己的邏輯。SeaJS能夠與jQuery這類框架完美集成。使用SeaJS能夠提升JavaScript代碼的可讀性和清晰度,解決目前JavaScript編程中廣泛存在的依賴關係混亂和代碼糾纏等問題,方便代碼的編寫和維護。
SeaJS的做者是前淘寶UED,現支付寶前端工程師玉伯。javascript
SeaJS 追求簡單、天然的代碼書寫和組織方式,具備如下核心特性:前端
SeaJS是爲了實現JavaScript的模塊化的,因此在 SeaJS 中,全部 JavaScript 文件都應該用模塊的形式來書寫,而且一個文件只包含一個模塊。它的操做也是圍繞着模塊來進行。java
1.定義模塊——definedjquery
define(id, dependencies,function(require, exports, module) { // 模塊代碼 });
define(function(require) { // 獲取模塊 a 的接口 var a = require('./a'); // 調用模塊 a 的方法 a.doSomething(); });
+ require.async:用來在模塊內部異步加載一個或多個模塊。 ``` javascript define(function(require) { // 異步加載多個模塊,在加載完成時,執行回調 require.async(['./c', './d'], function(c, d) { c.doSomething(); d.doSomething(); }); }); ```
2.配置——seajs.configgit
seajs.config({ // 設置路徑,方便跨目錄調用 paths: { 'arale': 'https://a.alipayobjects.com/arale', 'jquery': 'https://a.alipayobjects.com/jquery' }, // 設置別名,方便調用 alias: { 'class': 'arale/class/1.0.0/class', 'jquery': 'jquery/jquery/1.10.1/jquery' } });
3.加載模塊——seajs.usegithub
/ 加載一個模塊 seajs.use('./a'); // 加載一個模塊,在加載完成時,執行回調 seajs.use('./a', function(a) { a.doSomething(); }); // 加載多個模塊,在加載完成時,執行回調 seajs.use(['./a', './b'], function(a, b) { a.doSomething(); b.doSomething(); });