可以使用同步或异步的方式来加载 sea.js。
加载 sea.js 最直接的方式是通过 script 标签来引入。
<script src="http://example.com/libs/seajs/1.1.0/sea.js"></script>
可以将 sea.js 与其他常见类库合并,例如 jquery.js:
<script src="http://example.com/libs/sea-jquery.js"></script>
推荐使用 nginx concat module 进行自动合并。
<script src="http://example.com/libs/??seajs/1.1.0/sea.js,jquery/1.7.1/jquery.js"></script>
** 注意:通过服务器自动 combo 时,通常需要手动配置 base 路径:
<script src="http://example.com/libs/??seajs/1.1.0/sea.js,jquery/1.7.1/jquery.js"></script>
<script>
seajs.config({ 'base': 'http://example.com/libs/' });
seajs.use('underscore/1.1.6/underscore');
// => http://example.com/libs/underscore/1.1.6/underscore.js
</script>
可以在页面中内嵌以下代码,来让 sea.js 自身也能通过异步的方式加载:
<script>
// 其他代码
// 下面是 seajs 的异步载入代码:
;(function(m, o, d, u, l, a, r) {
if(m[d]) return;
function f(n, t) { return function() { r.push(n, arguments); return t; } }
m[d] = a = { args: (r = []), config: f(0, a), use: f(1, a) };
m.define = f(2);
u = o.createElement('script');
u.id = d + 'node';
u.src = 'http://example.com/libs/seajs/1.0.2/sea.js';
l = o.getElementsByTagName('head')[0];
l.insertBefore(u, l.firstChild);
})(window, document, 'seajs');
// 下面立刻就可以调用 seajs 的方法了:
seajs.config({
'base': 'http://example.com/libs/'
});
seajs.use('./init', function(init) {
// do some cool things.
});
</script>
通过 use 方法,可以在页面中加载任意模块:
<script src="http://example.comlibs/seajs/1.1.0/sea.js"></script>
<script>
seajs.use('path/to/init', function(init) {
init.somethingA(/* You can pass config as parameters here. */);
init.somethingB(/* You can pass config as parameters here. */);
});
</script>
callback 参数是可选的:
<script src="http://example.com/libs/seajs/1.1.0/sea.js"></script>
<script>
seajs.use('path/to/init');
</script>
上面的代码还可以通过 data-main 来简化:
<script src="http://example.com/libs/seajs/1.1.0/sea.js"
data-main="path/to/init" ></script>
更多用法,请参考 bootstrap/index.html