用来对 Sea.js 进行配置。jquery
seajs.config({ // 指定须要使用的插件 plugins: ['text', 'shim'],
// 设置别名,方便调用 alias: { 'class': 'arale/class/1.0.0/class', // 配置非 CMD 模块的 shim 信息,这样咱们就能够经过 require('jquery') 来获取 jQuery 'jquery': { src: 'lib/jquery-1.9.1.min.js', exports: 'jQuery' } }, // 设置路径,方便跨目录调用 paths: { 'arale': 'https://a.alipayobjects.com/arale', } });
用来在页面中加载一个或多个模块。异步
// 加载一个模块
seajs.use('./a');
// 加载一个模块,在加载完成时,执行回调
seajs.use('./a', function(a) {
a.doSomething();
});
// 加载多个模块,在加载完成时,执行回调
seajs.use(['./a', './b'], function(a, b) {
a.doSomething();
b.doSomething();
});
用来定义模块。Sea.js 推崇一个模块一个文件,遵循统一的写法:async
define(function(require, exports, module) {
// 模块代码
});
也能够手动指定模块 id 和依赖require
, exports
和 module
三个参数可酌情省略,具体用法以下。ui
require
用来获取指定模块的接口。spa
define(function(require) {
// 获取模块 a 的接口
var a = require('./a');
// 调用模块 a 的方法
a.doSomething();
});
注意,require
只接受字符串直接量做为参数插件
用来在模块内部异步加载一个或多个模块。code
define(function(require) {
// 异步加载一个模块,在加载完成时,执行回调
require.async('./b', function(b) {
b.doSomething();
});
// 异步加载多个模块,在加载完成时,执行回调
require.async(['./c', './d'], function(c, d) {
c.doSomething();
d.doSomething();
});
});
用来在模块内部对外提供接口。接口
define(function(require, exports) {
// 对外提供 foo 属性
exports.foo = 'bar';
// 对外提供 doSomething 方法
exports.doSomething = function() {};
});
与 exports
相似,用来在模块内部对外提供接口。ip
define(function(require, exports, module) {
// 对外提供接口
module.exports = {
name: 'a',
doSomething: function() {};
};
});