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 相关文章推荐
JSON.stringify 语法实例讲解
Mar 14 Javascript
javascript:void(0)的作用示例介绍
Oct 28 Javascript
javascript去掉前后空格的实例
Nov 07 Javascript
js获取时间(本周、本季度、本月..)
Nov 22 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
Apr 23 Javascript
js实现图片漂浮效果的方法
Mar 02 Javascript
JQuery调用绑定click事件的3种写法
Mar 28 Javascript
JavaScript表格常用操作方法汇总
Apr 15 Javascript
jQuery实现表格行上下移动和置顶效果
Jun 05 Javascript
简单的JS时钟实例讲解
Jan 13 Javascript
js实现本地时间同步功能
Aug 26 Javascript
JS实现根据详细地址获取经纬度功能示例
Apr 16 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
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
动态样式类封装JS代码
2009/09/02 Javascript
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
jQuery中trigger()与bind()用法分析
2015/12/18 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
jquery日历插件e-calendar升级版
2016/11/10 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
python结合shell查询google关键词排名的实现代码
2016/02/27 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
深入了解Python 变量作用域
2020/07/24 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
详解css3中 text-fill-color属性
2019/07/08 HTML / CSS
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
校园创业策划书
2014/01/14 职场文书
公司晚会策划方案
2014/05/17 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
Nginx + consul + upsync 完成动态负载均衡的方法详解
2021/03/31 Servers
python实现双链表
2022/05/25 Python