您的位置:首页 > Web前端 > JavaScript

SeaJS

2016-03-08 15:08 555 查看
参考Sea.js手册与文档:http://www.zhangxinxu.com/sp/seajs/docs/zh-cn/module-definition.html#module-constructor

1  概念

   一个适用于Web浏览器端的模块加载器,只是实现JS模块化及按模块加载。所有JS文件都应该用模块的形式来书写,并且一个文件只包含一个模块。

2 功能

 使用全局函数define来定义模块:

  define(id?,dependencies?,factory);

factory可以是对象、字符串、函数。

  不推荐使用id和dependencies参数,在开发阶段,模块加载器会自动获取这两个参数。部署上线时,则可以通过优化工具来提取这两个参数。

3  factory使用说明

factory
函数在调用时,会始终传入三个参数:
require
exports

module
,。

define(function(require, exports, module) {

// 。。。。。。

});

4 exports用来向外提供模块的API

define(function(require, exports) {
//
exports.foo = 'bar';
exports.doSomething = function() {};
});
还可[code]直接使用return
向外提供 API.
[/code]
define(function(require, exports) {
// 代码
return {
foo: 'bar',
doSomething: function() {};
};
});

如果return唯一的代码,则可简化为:
define({ //定义适合JSON数据
foo:'bar',
doSomething:function(){};
});

5 require用来访问其他模块的API
define(function(require) {
var a = require('./a');
a.doSomething();
});

require.asynck异步加载模块,并加载完成后执行回调函数。

define(function(require, exports, module) {
// 加载一个模块
require.async('./b', function(b) {
b.doSomething();
});

// 加载多个模块
require.async(['./c', './d'], function(c, d) {
// do something
});
});

require.resolve

使用
require()
的内部机制来解析并返回模块路径。该函数不会加载模块,只返回解析后的路径。

require.load

该方法可用来异步加载脚本,之后执行指定的回调函数。

require.constructor

给require参数对象添加一些公用属性和方法。

6 module存储模块元信息,拥有以下成员
module.id当前模块唯一标识,require(module.id),返回此模块exports。
module.dependencies
是一个数组,表示当前模块的依赖列表。

exports对象由模块系统创建,有时候希望exports是实例
define(function(require, exports, module) {
console.log(module.exports === exports); // true
module.exports = new SomeClass();
console.log(module.exports === exports); // false  //实例
});

module参数对象添加一些公用属性和方法。

extend.js:
define(function(require, exports, module) {
var Module = module.constructor;

Module.prototype.filename = function() {
var id = this.id;
var parts = id.split('/');
return parts[parts.length - 1];
};
});
a.js:
define(function(require, exports, module) {
exports.filename = module.filename();
});


7 路径说明
./当前目录
../上一个目录
/根目录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  seajs