我很长时间以来都很难解决这个问题,因为有很多文章展示了如何加载使用单词模块来描述它们的指令,服务和其他角度组件。 SEO噩梦。
所有解决方案都非常复杂,因此将JS文件分开几乎不相关。
有人找到了一种在需要时向主模块注入角度模块依赖关系的简单方法吗?
注意:由于我使用require.js,实际的JS已经存在(在需要时也是延迟加载的)。所以真正需要的是将模块注入角度。
这是我有多接近:
index.html中的窗口函数加载辅助.js文件
<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();
}
}
调用上一个函数并尝试将角度模块加载到角度
loadBackOfficeJs(function(){
require(['back'], function(){
//angular modules should be injected here.. somehow
});
});
答案 0 :(得分:0)
你应该看看这个lib ocLazyload
最基本的用例是通过提供的$ ocLazyLoad服务来加载模块。
$ocLazyLoad.load('yourModule.js');
这个article是由lib的作者在创建库时编写的。虽然它现在有点老了但它是延迟加载模块内部的一个很好的切入点。