SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架。本文分享了sea.js知识的总结,有兴趣的朋友可以一起学习。
SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架。它是一个用于Web开发的现代模块加载工具,提供了一种简单而极端的模块化体验。Sea.js由阿里、腾讯等公司共同维护。
使用 Sea.js的好处:
Sea.js追求简单自然的代码编写和组织方式,具有以下核心特性:
简单的模块定义规范:Sea.js遵循CMD规范,可以像Node.js一样编写模块代码
直观的代码组织:依赖的自动加载,简洁明了的配置,可以让我们更享受编码。
Sea.js还提供了常用的插件,对开发、调试、性能优化都有很大的帮助,有丰富的可扩展接口。
下面给大家介绍sea.js的三种编写模块的模式
对于导出,导出是一个向外界提供模块接口的对象。
定义(功能(要求、导出、模块){
var a=require(。/init’);
var fun1=function () {
A.write(模块main调用模块init的write方法);
};
exports . fun 1=fun 1;
});
除了向exports对象添加成员之外,还可以使用return直接提供接口。
定义(功能(要求、导出、模块){
var a=require(。/init’);
var fun1=function () {
A.write(模块main调用模块init的write方法);
};
返回{
有趣1:有趣1
}
})
如果模块只返回一个没有任何业务逻辑的对象,可以简化如下
定义({
fun1:函数(){
预警(“模块main的fun1调用成功”)
}
});
另一种是通过module.exports向外界提供统一的接口,例如:
定义(功能(要求、导出、模块){
var a=require(。/init’);//./是当前目录./是父目录/是根目录。
var fun1=function () {
A.write(模块main调用模块init的write方法);
};
Exports.b=function(){ //没有任何意义,赋值无效
警报( bb )
};
模块.导出={
有趣1:有趣1
}
});
Exports只是对module.exports的引用。当您在一个方法中为exports重新赋值时,module.exports的值不会改变。因此,为导出赋值是无效的。上面的方法只暴露了一个外部fun1。上述方法B的赋值无效,不能用于更改模块接口。
exports.async()
require.async(id||[],回调?)
require.async方法用于在模块内部异步加载模块,并在加载完成后执行指定的回调。回调参数是可选的。
定义(功能(要求、导出、模块){
require.async(。/init ,函数(a){
A.write(模块main调用模块init的write方法)
});
require.async([。/init“,”。/search],函数(a,b){
A.write(模块main调用模块init的write方法);
B.search(“成功引入搜索模块”)
});
});
模块是一个对象,它存储了与当前模块相关的一些属性和方法。
1个module.id字符串
模块的唯一标识。
2 module.uri String
根据模块系统的路径分析规则,模块的绝对路径一般为(define中没有写id参数时),module.id的值为module.uri,完全相同。
3模块依赖数组
Dependencies是一个数组,表示当前模块的依赖关系。