Sea.JS知识总结


Posted in Javascript onMay 05, 2016

SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架。是一款现代的用于Web开发的模块加载工具,提供简单、极致的模块化体验。Sea.js 由阿里、腾讯等公司共同维护。

使用 Sea.js的好处:

Sea.js 追求简单、自然的代码书写和组织方式,具有以下核心特性:

简单友好的模块定义规范:Sea.js 遵循 CMD 规范,可以像 Node.js 一般书写模块代码。
自然直观的代码组织方式:依赖的自动加载、配置的简洁清晰,可以让我们更多地享受编码的乐趣。
Sea.js 还提供常用插件,非常有助于开发调试和性能优化,并具有丰富的可扩展接口。

下面给大家介绍sea.js的三种编写模块的模式

使用exports,exports 是一个对象,用来向外提供模块接口。

define(function (require, exports, module) {
var a = require("./init");
var fun1 = function () {
return a.write("模块main调用模块init的write方法");
};
exports.fun1=fun1;
});

除了给 exports 对象增加成员,还可以使用 return 直接向外提供接口。

define(function(require,exports,module){
var a = require("./init");
var fun1 = function () {
return a.write("模块main调用模块init的write方法");
};
return{
fun1:fun1
}
})

如果模块没有任何业务逻辑只是返回一个对象还可以简化为以下

define({
fun1 : function () {
alert("模块main的fun1调用成功")
}
});

还有一种是通过module.exports对外提供一个统一的接口例如:

define(function(require,exports,module){
var a = require("./init");// ./是当前目录 ../是上级目录 /是根目录
var fun1 = function () {
return a.write("模块main调用模块init的write方法");
};
exports.b=function(){ //没有任何意义,赋值无效
alert("bb")
};
module.exports={
fun1:fun1
}
});

exports 仅仅是 module.exports 的一个引用。在 方法内部给 exports 重新赋值时,并不会改变 module.exports 的值。因此给 exports 赋值是无效的,以上的方法只暴漏给外部一个fun1,上面的b方法赋值是无效的,不能用来更改模块接口。

exports.async()
require.async(id||[], callback?)

require.async 方法用来在模块内部异步加载模块,并在加载完成后执行指定回调。callback 参数可选。

define(function(require,exports,module){
require.async('./init',function(a){
a.write("模块main调用模块init的write方法")
});
require.async(['./init',"./search"],function(a,b){
a.write("模块main调用模块init的write方法");
b.search("search模块成功引入")
});
});

module module是一个对象,上面存储了与当前模块相关联的一些属性和方法。

1 module.id String

模块的唯一标识。

2 module.uri String

根据模块系统的路径解析规则得到的模块绝对路径,一般情况下(没有在 define 中手写 id 参数时),module.id 的值就是 module.uri,两者完全相同。

3 module.dependencies Array

dependencies 是一个数组,表示当前模块的依赖。

Javascript 相关文章推荐
jQuery Tips 为AJAX回调函数传递额外参数的方法
Dec 28 Javascript
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Sep 13 Javascript
JS Date函数整理方便使用
Oct 23 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
Nov 07 Javascript
js统计页面的来访次数实现代码
May 09 Javascript
纯js实现重发验证码按钮倒数功能
Apr 21 Javascript
js实现的二级横向菜单条实例
Aug 22 Javascript
javascript引用类型之时间Date和数组Array
Aug 27 Javascript
BootStrap 导航条实例代码
May 18 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
Apr 28 Javascript
浅谈webpack devtool里的7种SourceMap模式
Jan 14 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
Aug 03 Javascript
在Node.js中使用Javascript Generators详解
May 05 #Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
May 05 #Javascript
JS中dom0级事件和dom2级事件的区别介绍
May 05 #Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
May 05 #Javascript
jQuery Mobile 和 Kendo UI 的比较
May 05 #Javascript
深入理解js promise chain
May 05 #Javascript
详解JavaScript中基于原型prototype的继承特性
May 05 #Javascript
You might like
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
php转换颜色为其反色的方法
2015/04/27 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
offsetHeight在OnLoad中获取为0的现象
2013/07/22 Javascript
Javascript原型链和原型的一个误区
2014/10/22 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
Angular2整合其他插件的方法
2018/01/20 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
Pyhton中防止SQL注入的方法
2015/02/05 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
浅析Python3 pip换源问题
2020/01/06 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
国际商务专业学生个人的自我评价
2013/09/28 职场文书
青春无悔演讲稿
2014/05/08 职场文书
企业宣传工作方案
2014/06/02 职场文书
自我推荐信格式模板
2015/03/24 职场文书
本科毕业论文致谢词
2015/05/14 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL