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);
不推荐使用id和dependencies参数,在开发阶段,模块加载器会自动获取这两个参数。部署上线时,则可以通过优化工具来提取这两个参数。
3 factory使用说明
[/code]
如果return唯一的代码,则可简化为:
define({ //定义适合JSON数据
foo:'bar',
doSomething:function(){};
});
5 require用来访问其他模块的API
6 module存储模块元信息,拥有以下成员
module.id当前模块唯一标识,require(module.id),返回此模块exports。
exports对象由模块系统创建,有时候希望exports是实例
module参数对象添加一些公用属性和方法。
extend.js:
7 路径说明
./当前目录
../上一个目录
/根目录
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的模块化与加载方式
- seajs中模块的解析规则详解和模块使用总结
- SeaJS入门教程系列之使用SeaJS(二)
- LABjs、RequireJS、SeaJS的区别
- seajs加载jquery时提示$ is not a function该怎么解决
- JavaScript模块化开发之SeaJS
- SeaJS 与 RequireJS 的差异对比
- 用grunt构建seajs项目遇到的各种坑
- 使用 angular-async-loader 来实现异步加载 angular 模块
- 一步步学会使用SeaJS 2.0
- 高富帅seajs使用示例及spm合并压缩工具露脸
- seajs打包部署工具spm的使用总结
- seajs加载jquery
- seajs的那些事儿
- nodejs:expressjs+backbonejs+gulp简单实践
- seajs模块加载
- js模块化开发----sea.js
- RequireJS、SeaJS、 LABjs的区别
- Seajs的用法
- seaJS教程指南