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 相关文章推荐
Checbox的操作含已选、未选及判断代码
Nov 07 Javascript
jsPDF导出pdf示例
May 02 Javascript
AngularJS单选框及多选框实现双向动态绑定
Jan 13 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
Dec 02 Javascript
Vue.use源码分析
Apr 22 Javascript
使用JavaScript实现表格编辑器(实例讲解)
Aug 02 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
Nov 15 Javascript
JS使用setInterval实现的简单计时器功能示例
Apr 19 Javascript
vue中$refs的用法及作用详解
Apr 24 Javascript
如何把vuejs打包出来的文件整合到springboot里
Jul 26 Javascript
layui 监听表格复选框选中值的方法
Aug 15 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
Oct 29 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
FleaPHP的安全设置方法
2008/09/15 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
Javascript面向对象编程
2012/03/18 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
详解Django中的权限和组以及消息
2015/07/23 Python
python调用fortran模块
2016/04/08 Python
Python实现的计算器功能示例
2018/04/26 Python
Django跨域资源共享问题(推荐)
2020/03/09 Python
HTML5 Canvas概述
2009/08/26 HTML / CSS
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
.net面试题
2016/09/17 面试题
如何查找网页漏洞
2016/06/22 面试题
2014法制宣传日活动总结
2014/07/09 职场文书
领导干部对照检查材料
2014/08/24 职场文书
私人委托书格式
2014/09/10 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
科技馆观后感
2015/06/08 职场文书
感恩父母主题班会
2015/08/12 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
总结Python变量的相关知识
2021/06/28 Python
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python