Javascript 使用angularjs和requirejs延迟加载模块
我很长一段时间以来一直很难解决这个问题,因为有很多文章介绍了如何加载指令、服务和其他使用单词module来描述它们的角度组件。。以搜索引擎优化噩梦告终 所有的解决方案都非常复杂,使得划分JS文件几乎不相关 是否有人找到了一种简单的方法,在需要时将角度模块依赖项注入主模块 注意:因为我使用的是require.js,所以实际的js已经存在了(在需要的时候也是lazyload的)。所以真正需要做的就是将模块注入到angular上 以下是我离得有多近:Javascript 使用angularjs和requirejs延迟加载模块,javascript,angularjs,requirejs,Javascript,Angularjs,Requirejs,我很长一段时间以来一直很难解决这个问题,因为有很多文章介绍了如何加载指令、服务和其他使用单词module来描述它们的角度组件。。以搜索引擎优化噩梦告终 所有的解决方案都非常复杂,使得划分JS文件几乎不相关 是否有人找到了一种简单的方法,在需要时将角度模块依赖项注入主模块 注意:因为我使用的是require.js,所以实际的js已经存在了(在需要的时候也是lazyload的)。所以真正需要做的就是将模块注入到angular上 以下是我离得有多近: index.html中的window函数加载sec
<script type="text/javascript">
var hasBackLoaded = false;
function loadBackOfficeJs (cb) {
console.log("loadBackOfficeJs");
if(!hasBackLoaded){
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = '<%=dist_cdn%>/scripts/back.js';
newScript.onload = backLoaded;
document.body.appendChild(newScript);
function backLoaded(){
console.log("back loaded")
hasBackLoaded = true;
cb();
}
} else {
cb();
}
}
var hasBackLoaded=false;
函数loadBackOfficeJs(cb){
log(“loadBackOfficeJs”);
如果(!hasbackload){
var newScript=document.createElement('script');
newScript.type='text/javascript';
newScript.src='/scripts/back.js';
newScript.onload=回装;
document.body.appendChild(newScript);
函数backload(){
console.log(“后加载”)
hasBackLoaded=true;
cb();
}
}否则{
cb();
}
}
loadBackOfficeJs(函数(){
require(['back'],function()){
//角模应该在这里注入..不知何故
});
});
你应该看看这个库 由于提供了$ocLazyLoad服务,最基本的用例是加载模块
$ocLazyLoad.load('yourModule.js');
这是图书馆的作者在创建图书馆时写的。虽然它现在有点旧了,但它是惰性加载模块内部的一个很好的入口。很好,上面说“不要麻烦惰性加载”,我正在寻找一种更直接的方法,因为这个库非常繁重和复杂