AngularJS-使用LazyLoad- Webpack动态加载脚本文件

Ste*_*ieB 16 lazy-loading angularjs webpack oclazyload

现在在我的index.html页面中,我有两个CDN文件的链接,一个是JS,另一个是CSS文件.

即在我身体的底部

https://somedomain.com/files/js/js.min.js
Run Code Online (Sandbox Code Playgroud)

并在头部

https://somedomain.com/files/css/css.min.css
Run Code Online (Sandbox Code Playgroud)

但是现在我们的主页上不需要它们,只是在一条特定的路线上.所以我正在研究如何在路由被攻击时延迟加载这些CDN资源,即/profile只有这样?

这些不是通过bower或npm安装的,而是通过CDN url加载的,例如jquery.如何在Angular 1和Webpack中根据路由延迟加载?

Ara*_*ind 11

在这里,你可以使用oclazyload.看看下面的代码.下面连接一个plunker

我有一个名为myApp的模块,如下所示

angular.module('myApp', ['ui.router','oc.lazyLoad'])
    .config(function ($stateProvider, $locationProvider, $ocLazyLoadProvider) {
            $stateProvider
                .state("home", {
                    url: "/home",
                    templateUrl: "Home.html",
                    controller: 'homeCtrl',
                    resolve: { 
                        loadMyCtrl: ['$ocLazyLoad', function ($ocLazyLoad) {
                            return $ocLazyLoad.load('homeCtrl.js');
                        }]
                    }
                })
            .state("profile", {
                url:"/profile",
                templateUrl: "profile.html",
                 resolve: {
                      loadMyCtrl: ['$ocLazyLoad', function ($ocLazyLoad) {
                      return $ocLazyLoad.load('someModule.js');
                        }]
                    }
            })

    });
Run Code Online (Sandbox Code Playgroud)

我有另一个名为someApp的模块,如下所示

(function () {
var mynewapp=angular.module('someApp',['myApp']);

mynewapp.config(function(){

  //your code to route from here! 

});
      mynewapp.controller("profileCtrl", function ($scope) {

            console.log("reached profile controller");
        });

})();
Run Code Online (Sandbox Code Playgroud)

在这里有一个Live Plunker用于你的演示