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


一个精致实用的AMD javascript模块加载器,可用于node端和浏览器环境
在HTML中引入加载器
``html`
`js`
/**
* 定义模块
* @param {String} id - 模块id
* @param {Array} depends - 依赖模块
* @param {Any} factory - 模块构造器
*/
define(id, depends, factory)
define(id, depends)
define(id, factory)
define(depends, factory)
define(factory)
用于设置和获取config
`js`
loader.config(name)
loader.config(name, value)
一般用于配置alias和resolve规则
`js`
butterfly.config('alias', {
'util-request', 'util/request'
});
alias也可以是一个function
`js`
butterfly.config('alias', function(id) {
if (id.startsWith('ui-')) {
return 'ui/' + id;
}
});
`js`
butterfly.config('resolve', function(id) {
return '/assets/' + id + '.js';
});
定义一个新的loader
`js`
window.x = butterfly.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);
});
`
定义模块
加载模块
判断模块是否已加载
取消定义一个模块
取得加载器中所有的模块
解析模块远程地址
默认情况下,加载器会占有butterfly和define两个全局变量,如果有冲突时可以使用这个方法解决
`js``
window.x = butterfly.noConflict();
define(...) // 这个就是原来的define
x.define(...) // 现在就可以使用x来定义和加载模块了