seajs 使用指南

Sea.js 提供了一个全局方法——define,用来定义一个 CMD 模块。

1
2
3
4
5
define(function(require, exports, module) {
    // 模块代码
    // 使用require获取依赖模块的接口
    // 使用exports或者module来暴露该模块的对外接口
})

定义好模块后,在页面引入 sea.js。为了让 sea.js 内部能快速获取到自身路径,推荐手动加上 id 属性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script src="http://path/to/seajs/1.2.0/sea.js" id="seajs"></script>
<script>
    seajs.use('./hello')

    // 可以带 callback
    seajs.use('./hello', function(hello) {
      hello.api()
    })
    
    // 也可同时(依次)加载多个模块
    seajs.use(['./hello', './world'], function(hello, world) {
      hello.api()
      world.api()
    })
</script>

自定义配置,简化代码:seajs.config(options)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
seajs.config({
  // 别名配置
  // 使用 alias,可以让文件的真实路径与调用标识分开,有利于统一维护
  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 来简化书写
  paths: {
    'gallery': 'https://a.alipayobjects.com/gallery'
  },

  // 变量配置,模块路径在运行时才能确定
  // vars 配置的是模块标识中的变量值,在模块标识中用 {key} 来表示变量
  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'
});

注意:一般请不要配置 base 路径,把 sea.js 放在合适的路径往往更简单一致。