第一次知道sea是在14年底,微信不讓用xxbridge分享網頁時可以自定義分享圖片,分享內容;於是跑去看微信的js腳本,發現一切全都變了,也看到了這個sea,於是至今耿耿於懷,今天趁着同事沒命改代碼,俺決定看看這個sea到底是個啥
http://seajs.org/docs/#docs,sea的官方文檔地址,說是推薦順序閱讀,不過說實話,看了那個5分鐘入門的教程,我徹底暈沒搞明白,後來硬着頭皮往下看,感覺CMD模塊定義規範比較重要,看完了他,許多疑惑也就瞭解了。
首先是幾個基本功能的解釋:
define:此方法用於定義一個模塊,一般格式:
define(function(require, exports, module) {}define方法有三個主要參數,
require官方的解釋是:是一個方法,接受 模塊標識 作爲唯一參數,用來獲取其他模塊提供的接口。
,如果這個
比如:有一個m.js, 大體代碼如下:
define(function(require) {
function classA() {
this.str = "test string";
}
});
然後,test.js裏調用m.js
define(function(require){
var A = require('./m'); // 此處可以不寫m.js; A 現在就是classA
var obja= new A(); // 可以new 一個A(classA)的對象
alert(obja.str);
});
exports, 官方解釋:是一個對象,用來向外提供模塊接口。此對象決定了var A = require('') 返回的是什麼,不過此對象通常用法是
module.exports = ....;
至此,define的三個主要參數都清楚了,下面描述一下,使用流程
首先通過define(funciton(require, exports, module){})方法來定義模塊,然後可以通過define(function(require){}) 來引用其他模塊,然後在執行代碼,最後通過sea.use來運行。