* 模块加载方法 * @param {string} name 模块名称 * @param {string} path 外部脚本的加载路径
(name, path)
| 119 | * @param {string} path 外部脚本的加载路径 |
| 120 | */ |
| 121 | function _loadModule(name, path) { |
| 122 | //如果存在模块的缓存,表示已有同名模块 |
| 123 | if(name !== 'root' && moduleCache[name]) return; |
| 124 | //如果没有缓存则进行首次加载 |
| 125 | let script = document.createElement('script'); |
| 126 | script.src = path + '.js'; |
| 127 | script.async = true; |
| 128 | //初始化待加载模块缓存 |
| 129 | moduleCache[name] = new Module(name,path); |
| 130 | //加载完毕后回调函数 |
| 131 | script.onload = function(){ |
| 132 | console.log(`${name}模块触发load事件`); |
| 133 | moduleCache[name].load = true; |
| 134 | _checkUnResolvedModules(); |
| 135 | } |
| 136 | document.body.appendChild(script); |
| 137 | } |
| 138 | |
| 139 | /**按栈顺序检查未执行的工厂函数,如果依赖全部加载完毕,则执行工厂函数 */ |
| 140 | function _checkUnResolvedModules(){ |
no test coverage detected