Sea.js Manual & Documentation


Table of Contents


加载方式

可以使用同步或异步的方式来加载 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

通过 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