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 相关文章推荐
js随机颜色代码的多种实现方式
Apr 23 Javascript
jQuery中filter()和find()的区别深入了解
Sep 25 Javascript
详谈JavaScript内存泄漏
Nov 14 Javascript
jQuery中:focus选择器用法实例
Dec 30 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
Aug 02 Javascript
js遍历map javaScript遍历map的简单实现
Aug 26 Javascript
基于jquery二维码生成插件qrcode
Jan 07 Javascript
Javascript的this用法
Jan 16 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
Oct 20 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
Nov 02 Javascript
微信小程序实现留言板(Storage)
Nov 02 Javascript
如何用JavaScript实现功能齐全的单链表详解
Feb 11 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
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
色色整理的PHP面试题集锦
2012/03/08 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
如何实现JS函数的重载
2006/09/22 Javascript
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
JS设置网页图片vspace和hspace属性的方法
2015/04/01 Javascript
早该知道的7个JavaScript技巧
2016/06/21 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
iscroll实现下拉刷新功能
2017/07/18 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
vue动态循环出的多个select出现过的变为disabled(实例代码)
2019/11/10 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
2020/04/04 jQuery
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
python实现图片插入文字
2019/11/26 Python
Python和Sublime整合过程图示
2019/12/25 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
python判断元素是否存在的实例方法
2020/09/24 Python
Spanx塑身衣官网:美国知名内衣品牌
2017/01/11 全球购物
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
工程概预算专业毕业生求职信
2013/10/04 职场文书
涉外文秘个人求职的自我评价
2013/10/07 职场文书
四个太阳教学反思
2014/02/01 职场文书
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
大学生找工作求职信
2014/07/09 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
用电申请报告范文
2015/05/18 职场文书
同意落户证明
2015/06/19 职场文书