Javascript 使用angularjs和requirejs延迟加载模块

Javascript 使用angularjs和requirejs延迟加载模块,javascript,angularjs,requirejs,Javascript,Angularjs,Requirejs,我很长一段时间以来一直很难解决这个问题,因为有很多文章介绍了如何加载指令、服务和其他使用单词module来描述它们的角度组件。。以搜索引擎优化噩梦告终 所有的解决方案都非常复杂,使得划分JS文件几乎不相关 是否有人找到了一种简单的方法,在需要时将角度模块依赖项注入主模块 注意:因为我使用的是require.js,所以实际的js已经存在了(在需要的时候也是lazyload的)。所以真正需要做的就是将模块注入到angular上 以下是我离得有多近: index.html中的window函数加载sec

我很长一段时间以来一直很难解决这个问题,因为有很多文章介绍了如何加载指令、服务和其他使用单词module来描述它们的角度组件。。以搜索引擎优化噩梦告终

所有的解决方案都非常复杂,使得划分JS文件几乎不相关

是否有人找到了一种简单的方法,在需要时将角度模块依赖项注入主模块

注意:因为我使用的是require.js,所以实际的js已经存在了(在需要的时候也是lazyload的)。所以真正需要做的就是将模块注入到angular上

以下是我离得有多近:

  • index.html中的window函数加载secondary.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();
        }
    }
    
    
    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');
    

    这是图书馆的作者在创建图书馆时写的。虽然它现在有点旧了,但它是惰性加载模块内部的一个很好的入口。

    很好,上面说“不要麻烦惰性加载”,我正在寻找一种更直接的方法,因为这个库非常繁重和复杂