sea.JS符合cmd规范的模块加载器。当页面中有多个js文件时,使用sea.JS会让代码更好写,更易懂。
模块定义规范
require
是一个方法,接受 模块标识 作为唯一参数,用来获取其他模块提供的接口。
define(function(require,exports,module){
...
})
require
require.async
异步加载模块,使用callback回调方式调用模块提供接口。
require.resolve
用于放回模块绝对路径。
exports
exports
可以通过给exports新增属性的方法来设置模块对外提供的接口。但注意如果直接给exports赋值,则没有用。因为本质上exports只是module.exports对象的一个引用。修改exports并不影响module.exports。由此可见,最后模块导出还是看module.exports对象。
module
module.id
模块的唯一标识
module.uri
模块的绝对路径
一般情况下(没有在 define 中手写 id 参数时),module.id 的值就是 module.uri,两者完全相同,可视为默认id。
module.dependencies
模块的依赖,是一个数组
module.exports
当前模块对外提供的接口。
传给 factory 构造方法的 exports 参数是 module.exports 对象的一个引用。只通过 exports 参数来提供接口,有时无法满足开发者的所有需求。 比如当模块的接口是某个类的实例时,需要通过 module.exports 来实现。
注意:对 module.exports 的赋值需要同步执行,不能放在回调函数里。
模块路径
相对标识
相对标识只出现在模块环境中,以 "." 开头。会相对当前模块的 URI 来解析.
sea.JS配置
seajs.config