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 兼容FF的onmouseenter和onmouseleave的代码
Jul 19 Javascript
JS 常用校验函数
Mar 26 Javascript
jQuery .tmpl(), .template()学习资料小结
Jul 18 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
Dec 05 Javascript
JavaScript中的闭包(Closure)详细介绍
Dec 30 Javascript
简述AngularJS相关的一些编程思想
Jun 23 Javascript
初识简单却不失优雅的Vue.js
Sep 12 Javascript
JS模拟超市简易收银台小程序代码解析
Aug 18 Javascript
React+Antd+Redux实现待办事件的方法
Mar 14 Javascript
世界上最短的数字判断js代码
Sep 09 Javascript
前端使用crypto.js进行加密的函数代码
Aug 16 Javascript
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
在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
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
再谈JavaScript线程
2015/07/10 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
Angular如何引入第三方库的方法详解
2017/07/13 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
Vue程序调试的方法
2019/06/17 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
Layui实现数据表格默认全部显示(不要分页)
2019/10/26 Javascript
Python实现的HMacMD5加密算法示例
2018/04/03 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
python的继承知识点总结
2018/12/10 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
学习和使用python的13个理由
2019/07/30 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
如何在python中实现线性回归
2020/08/10 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
Django视图类型总结
2021/02/17 Python
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
市场部经理岗位职责
2014/04/10 职场文书
秋冬农业生产标语
2014/10/09 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技