-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmul.js
59 lines (54 loc) · 1.41 KB
/
mul.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*!
* mul.js v0.5
* (c) 2017 Ted Patrick
* Released under the MIT License.
*/
var mul = {};
//default path to load modules
mul.root = "";
mul.modules = {};
mul.callbacks = {};
mul.component = function( name , url ){
var compName = name;
if( url == undefined ){
url = name + ".js";
}
return Vue.component( compName , function( resolve ){
mul.get( name , url , resolve );
});
};
mul.get = function( name , url , callback ){
//modules exists & loaded
if( mul.modules[name] && mul.modules[name].loaded == true ){
callback( mul.modules[name].module );
return;
}
//setup loading
if( callback ){
if( mul.callbacks[name] == undefined ){
mul.callbacks[name] = [];
}
mul.callbacks[name].push( callback );
}
var tag = document.createElement( "script" );
tag.setAttribute( "type" , "text/javascript" );
tag.setAttribute( "src" , mul.root + url );
document.getElementsByTagName( "head" )[0].appendChild( tag );
};
mul.set = function( name , mod ){
mul.modules[name] = {
module: mod ,
loaded: true
};
if( mul.callbacks[name] ){
var len = mul.callbacks[name].length;
var i;
for( i = 0; i < len; i++ ){
mul.callbacks[name][i]( mod );
}
}
};
if( typeof module !== "undefined" && module.exports ){
module.exports = mul;
}
window.mul = mul;