「僅作一件事,作好一件事。」javascript
這個應該就是seaJs的精髓了。前端
我在本身的一些項目中使用過seaJs。對其算是瞭解一二。現在就班門弄斧。輕輕地談一下。java
首先上一段度孃的話:jquery
「seaJs是一個遵循CommonJs規範的JavaScript模塊載入框架,可以實現JavaScript的模塊化開發及載入機制。與jQuery等JavaScript框架不一樣。SeaJS不會擴展封裝語言特性,而僅僅是實現JavaScript的模塊化及按模塊載入。SeaJS的主要目的是令JavaScript開發模塊化並可以輕鬆愉悅進行載入,將前端project師從繁重的JavaScript文件及對象依賴處理中解放出來。可以專一於代碼自己的邏輯。SeaJS可以與jQuery這類框架完美集成。使用SeaJS可以提升JavaScript代碼的可讀性和清晰度。解決眼下JavaScript編程中廣泛存在的依賴關係混亂和代碼糾纏等問題,方便代碼的編寫和維護。」git
下載url:https://github.com/seajs/seajsgithub
咱們能清楚地看到,docs是文檔。dist是壓縮好的、用於瀏覽器端的SeaJS代碼;src則是源碼。編程
package.json + Gruntfile.js就是Grunt構建工具所需要的文件。用來合併壓縮等等。json
看完代碼結構,現在就開始說一下里面的基本使用方法。瀏覽器
譬如:sass
seajs.config({ // 別名配置 alias: { 'es5-safe': 'gallery/es5-safe/0.9.3/es5-safe', 'json': 'gallery/json/1.0.2/json', 'jquery': 'jquery/jquery/1.10.1/jquery' }, // 路徑配置 paths: { 'gallery': 'https://a.alipayobjects.com/gallery' }, // 變量配置 vars: { 'locale': 'zh-cn' }, // 映射配置 map: [ ['http://example.com/js/app/', 'http://localhost/js/app/'] ], // 預載入項 preload: [ Function.prototype.bind ?'' : 'es5-safe', this.JSON ? '' : 'json' ], // 調試模式 debug: true, // Sea.js 的基礎路徑 base: 'http://example.com/path/to/base/', // 文件編碼 charset: 'utf-8' });
更加具體的配置 ,可以參考:https://github.com/seajs/seajs/issues/262
繼續看代碼:
// 載入模塊 common,並在載入完畢時,運行指定回調 seajs.use('./common', function(main) { common.init(); }); // // 併發載入模塊 x 和模塊 y。並在都載入完畢時,運行指定回調 seajs.use(['./x', './y'], function(x, y) { x.init(); y.init(); });
詳細調用例如如下:
define(function(require, exports, module) { // 你要寫的模塊代碼 });
require
獲取指定模塊的接口。
define(function(require) { // 獲取模塊 x 的接口 var x = require('./x'); // 調用模塊 x 的方法 x.doSomething(); });
define(function(require) { // 異步載入一個模塊,在載入完畢時。運行回調 require.async('./b', function(b) { b.doSomething(); }); // 異步載入多個模塊,在載入完畢時。運行回調 require.async(['./c', './d'], function(c, d) { c.doSomething(); d.doSomething(); }); });ps:此段代碼copy自官網參考文檔。
define(function(require, exports) { //這一句對外提供了一個屬性todo exports.todo = 'wt'; });
膚淺地過了一遍主要的使用方法以後,接下來就說一下要注意的東西了。
// 錯誤! define(function(req) { // ... }); // 錯誤! define(function(r) { // ... }); // 正確! define(function(require) { // ... });
require
又一次賦值或者不能把這個函數重命名。// 錯誤 var yilai = require, a= yilai ("./mod"); // 錯誤 require = function() {}; // 錯誤 function todo(require) {} // 錯誤 function todo() { var require = function() {}; }
// 錯誤! require(todo); // 錯誤! require("to-" + "do"); // 錯誤! require("todo".toLowerCase());
還不用seaJs。你就凹凸慢了。
注:此 文章參考了官網的很是多文章,編寫而來。想知道得不少其它的童鞋。請點擊這裏:http://seajs.org/docs/#docs
Author: Alone
Antroduction: 高級前端開發project師
Sign: 人生沒有失敗。僅僅有沒到的成功。
博主相關文章推薦: