有了 define 等模塊定義規范的實現,我們可以開發出很多模塊。但光有一堆模塊不管用,我們還得讓它們能跑起來。在 SeaJS 里,要啟動模塊系統很簡單:
<script src=”path/to/sea.js”></script>
<script>
seajs.use(‘./main’);
</script>
seajs.use 用來在頁面中加載模塊。通過 use 方法,可以在頁面中加載任意模塊。
語法:seajs.use seajs.use(id, callback?)
// 加載模塊 main,並在加載完成時,執行指定回調
seajs.use(‘./main’, function(main) {
main.init();
});
use 方法還可以一次加載多個模塊:
// 並發加載模塊 a 和模塊 b,並在都加載完成時,執行指定回調
seajs.use(['./a', './b'], function(a, b) {
a.init();
b.init();
});
callback 參數可選。當只加載一個模塊,且不需要 callback 時,可以用 data-main 屬性來簡化,:<script src=”path/to/sea.js” data-main=”./main”></script>
上面的代碼等價於:
<script src=”path/to/sea.js”></script>
<script>
seajs.use(‘./main’);
</script>
SeaJS 還提供 data-config 來加載配置文件:
<script src=”path/to/sea.js” data-config=”path/to/config”></script>
data-config 等價:
seajs.config({
preload: ['path/to/config']
});
路徑解析規則與 seajs.use 一致。
我這里用的是:
<script src=”/js/lib/sea.js” data-config=”/js/config.js”></script>
<script>
seajs.use(‘/js/main’, function(main) {
main.banner_focus(‘#focus’);
});
注:main為模塊名。main.method為模塊定義的函數,可以傳遞參數過去。