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 相关文章推荐
javascript 贪吃蛇实现代码
Nov 22 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
Jul 09 Javascript
jquery选择器、属性设置用法经验总结
Sep 08 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
Sep 02 Javascript
一个JavaScript操作元素定位元素的实例
Oct 29 Javascript
jQuery实现定时读取分析xml文件的方法
Jul 16 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
Jun 21 Javascript
js获取json中key所对应的value值的简单方法
Jun 17 Javascript
Vue.js中组件中的slot实例详解
Jul 17 Javascript
微信小程序中button去除默认的边框实例代码
Aug 01 Javascript
layui导出所有数据的例子
Sep 10 Javascript
vue把输入框的内容添加到页面的实例讲解
Nov 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
我的论坛源代码(七)
2006/10/09 PHP
php 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
zf框架的registry(注册表)使用示例
2014/03/13 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
JavaScript实现异步图像上传功能
2018/07/12 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
python调用windows api锁定计算机示例
2014/04/17 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
Python的信号库Blinker用法详解
2020/12/31 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
金鑫耀Java笔试题
2014/09/06 面试题
abstract class和interface有什么区别
2013/08/04 面试题
日语专业毕业生自荐信
2013/11/11 职场文书
考察邀请函范文
2015/01/31 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
三国演义读书笔记
2015/06/25 职场文书
谢师宴家长致辞
2015/07/27 职场文书
goland 清除所有的默认设置操作
2021/04/28 Golang