SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架。

参考以下网址进行详细学习:

https://segmentfault.com/a/1190000000357191?page=1

三种编写模块的模式

使用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 是一个数组,表示当前模块的依赖。

sea.js总结的更多相关文章

  1. sea.js模块化编程

    * 为什么要模块化? 解决文件依赖 解决命名冲突 ; var var2 = 2; function fn1(){ } function fn2(){ } return { fn1: fn1, fn2: ...

  2. 解决sea.js引用jQuery提示$ is not a function的问题

    在使用sea.js的如下写法引用jQuery文件时, //main.jsdefine(function(require,exports,module){ var $ = require('jquery ...

  3. 模块化开发--sea.js

    当你的网站开发越来越复杂的时候,会经常遇到一下问题吗?1.冲突2.性能3.依赖如果在多人开发或者是复杂的开发过程中会经常遇到这些问 题,就可以用模块化开发来解决.以上问题是如何产生的?1.冲突:如果你 ...

  4. sea.js 入门

    上个月学了 require.js 现在顺便来学学 sea.js. 对比下这两种的区别,看自己喜欢哪个,就在接下来的项目中去使用它吧. seajs中的所有 JavaScript 模块都遵循 CMD 模块 ...

  5. 第三课:sea.js模块加载原理

    模块加载,其实就是把js分成很多个模块,便于开发和维护.因此加载很多js模块的时候,需要动态的加载,以便提高用户体验. 在介绍模块加载库之前,先介绍一个方法. 动态加载js方法: function l ...

  6. Seajs是什么及sea.js 由来,特点以及优势

    Seajs是什么及sea.js 由来,特点以及优势 这篇文章主要介绍了Seajs的相关知识和和学习心得,适合刚接触SeaJS的同学,需要的朋友可以参考下,有更好的新手教程或文档,欢迎推荐.分享   1 ...

  7. Sea.js学习4——Sea.js的配置

    可以对 Sea.js 进行配置,让模块编写.开发调试更方便. seajs.config seajs.config(options) 用来进行配置的方法. seajs.config({ // 别名配置 ...

  8. Sea.js学习3——Sea.js的CMD 模块定义规范

    在 Sea.js 中,所有 JavaScript 模块都遵循 CMD(Common Module Definition) 模块定义规范.该规范明确了模块的基本书写格式和基本交互规则. 在 CMD 规范 ...

  9. Sea.js学习2——Sea.js的API 快速参考

    (7 个接口是最常用的) 一.seajs.config:用来对 Sea.js 进行配置. seajs.config({ // 设置路径,方便跨目录调用 paths: { 'arale': 'https ...

  10. Sea.js学习1——初识Sea.js

    Sea.js 是一个成熟的开源项目,核心目标是给前端开发提供简单.极致的模块化开发体验. 使用 Sea.js,在书写文件时,需要遵守 CMD (Common Module Definition)模块定 ...

随机推荐

  1. 一步一步学数据结构之n--n(图遍历--深度优先遍历--非递归实现)

    前面已经说了图的深度优先遍历算法,是用递归实现的,而在这里就讲一下用非递归实现,需要借助栈: 算法思想:        1. 栈初始化        2. 输出起始顶点,起始顶点改为“已访问”标志,将 ...

  2. Tomcat服务器配置文件uri编码设置

    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" ...

  3. 【Away3D代码解读】(五):动画模块及骨骼动画

    动画模块核心存放在away3d.animators包里: Away3D支持下面几种动画格式: VertexAnimator:顶点动画 SkeletonAnimator:骨骼动画 UVAnimator: ...

  4. ZOJ1111:Poker Hands(模拟题)

    A poker deck contains 52 cards - each card has a suit which is one of clubs, diamonds, hearts, or sp ...

  5. PowerDesigner 12.5 汉化破解完整版

    PowerDesigner 12.5 汉化破解完整版 分类: ⑦ 综合 2011-08-09 14:59 2979人阅读 评论(0) 收藏 举报 破解wizardsybasetoolsshell扩展 ...

  6. JavaScript要点 (一) 变量-作用域

    JavaScript 作用域 作用域—可访问变量的集合. 全局变量或者函数可以覆盖window对象的变量或者函数: 局部变量和window对象可以覆盖全局变量和函数. JavaScript 作用域 在 ...

  7. List集合

    集合类方便操作,增删查找容易.集合的超级接口collection:1.List: 1.ArrayList:是存在一个数组(Object[]),添加,删除元素很慢,查找很快,元素在内存中是有序的. 2. ...

  8. java.lang.UnsupportedClassVersionError: Bad version number in .class file 解决办法

    java.lang.UnsupportedClassVersionError: Bad version number in .class file 造成这种错误的原因是支撑Tomcat运行的JDK版本 ...

  9. Android开发——自动生成Android屏幕适配的dimens.xml文件

    使用dimens.xml解决屏幕适配问题是Android官方解决方案,本文主要讲述了如何自动生成Android屏幕适配的dimens.xml,减少了工作量,在维护dimens.xml文件时更加省时省力 ...

  10. iOS开发:AVPlayer实现流音频边播边存

    1. AVPlayer简介 AVPlayer存在于AVFoundation中,可以播放视频和音频,可以理解为一个随身听 AVPlayer的关联类: AVAsset:一个抽象类,不能直接使用,代表一个要 ...