An AMD javascript loader can be used in both in node & browse env.
npm install xloaderxloader
====


一个精致实用的Javascript模块加载器,可用于NodeJs环境和浏览器环境。
在HTML中引入加载器
``html`
`js`
/**
* 定义模块
* @param {String} id - 模块id
* @param {Array} depends - 依赖的模块
* @param {NotArray} factory - 模块构造器
*/
define(id, depends, factory)
define(id, depends)
define(id, factory)
`jsundefined
/**
* 加载模块
* @param {Array|String} - 待加载的模块列表
* @param {Function} - 回调方法,可以省略
* @return {Any} - 同步加载时,会返回第一个已加载的模块,如果是异步加载返回`
*/
require(ids, callback)
`js`
loader.config(name)
loader.config(name, value)
一般用于配置alias和resolve规则
`js`
xloader.config('alias', {
'util-request', 'util/request'
});
alias也可以是一个function
`js`
xloader.config('alias', function(id) {
if (id.startsWith('ui-')) {
return 'ui/' + id;
}
});
`js`
xloader.config('resolve', function(id) {
return '/assets/' + id + '.js';
});
定义一个新的loader
`js`
window.x = xloader.new('x', { autoloadAnonymous: true });
然后就可以使用x加载器了
`js
x.define('util', ['exports'], function(exports) {
exports.sum = function(a, b) {
return a + b;
};
});
x.require(['util'], function(util) {
util.sum(1, 2).should.be.equal(3);
});
`
新构建的加载器支持以下API:
定义模块
加载模块
判断模块是否已加载
取消定义一个模块
取得加载器中所有的模块
解析模块远程地址
默认情况下,加载器会占有xloader, define, require三个全局变量,如果有冲突时可以使用这个方法解决
`js`
window.x = xloader.noConflict();
define(...) // 这个就是原来的define
x.define(...) // 现在就可以使用x来定义和加载模块了
``
git clone https://github.com/bencode/xloader.git
cd xloader
npm install
npm start
- NodeJs环境
``
npm run test
- 浏览器环境
``
http://127.0.0.1:8080/test/browser/
```
npm run build