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 相关文章推荐
js打印纸函数代码(递归)
Jun 18 Javascript
js改变鼠标的形状和样式的方法
Mar 31 Javascript
在JS数组特定索引处指定位置插入元素
Jul 27 Javascript
js生成的验证码的实现与技术分析
Sep 17 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
Mar 11 Javascript
讲解vue-router之什么是嵌套路由
May 28 Javascript
Vue路由切换时的左滑和右滑效果示例
May 29 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
Jul 02 Javascript
js仿360开机效果
Dec 26 Javascript
js实现动态时钟
Mar 12 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
Nov 12 Javascript
js判断两个数组相等的5种方法
May 06 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
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
编写PHP的安全策略
2006/10/09 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
javascript中获取选中对象的类型
2007/04/02 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
2016/06/01 Javascript
关于Node.js的events.EventEmitter用法介绍
2017/04/01 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
python 剪切移动文件的实现代码
2018/08/02 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
python实现电子书翻页小程序
2019/07/23 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
Bodum官网:咖啡和茶壶、玻璃器皿、厨房电器等
2018/08/01 全球购物
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
社区志愿者培训方案
2014/06/10 职场文书
布达拉宫导游词
2015/02/02 职场文书
保研推荐信范文
2015/03/25 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
Django rest framework如何自定义用户表
2021/06/09 Python
零基础学java之循环语句的使用
2022/04/10 Java/Android