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 相关文章推荐
让IE8支持DOM 2(不用框架!)
Dec 31 Javascript
jquery 提交值不为空的元素示例代码
May 10 Javascript
javascript:json数据的页面绑定示例代码
Jan 26 Javascript
iframe的onreadystatechange事件在firefox下的使用
Apr 16 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
Sep 01 Javascript
JS利用cookies设置每隔24小时弹出框
Apr 20 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
Nov 15 Javascript
angular 未登录状态拦截路由跳转的方法
Oct 09 Javascript
angular4笔记系列之内置指令小结
Nov 09 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
Feb 12 Javascript
详解滑动穿透(锁body)终极探索
Apr 16 Javascript
js中console在一行内打印字符串和对象的方法
Sep 10 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
默默简单的写了一个模板引擎
2007/01/02 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
微信支付开发维权通知实例
2016/07/12 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
详解写好JS条件语句的5条守则
2019/02/28 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
python中使用序列的方法
2015/08/03 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
机器学习实战之knn算法pandas
2019/06/22 Python
python实现图片转字符画的完整代码
2021/02/21 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
英国著名的茶叶品牌:Whittard of Chelsea
2016/09/22 全球购物
计算机专业职业规划
2014/02/28 职场文书
文明村镇申报材料
2014/05/06 职场文书
2014年小学工作总结
2014/11/26 职场文书
功夫熊猫观后感
2015/06/10 职场文书
2016年春节问候语
2015/11/11 职场文书
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP