Angular1中使用了oclazyload,每路由下的子模块如何打包??

发布于 2022-09-04 11:24:19 字数 2656 浏览 25 评论 0

1,使用了oclazyload做懒加载,但不知道如何在每个路由下打包子模块,如下app.js部分代码

angular.module('main', ['ui.router', 'oc.lazyLoad', 'CommonService'
    ])

.config(['$stateProvider', '$urlRouterProvider', '$httpProvider',
    function($stateProvider, $urlRouterProvider, $httpProvider) {
        $httpProvider.interceptors.push('HttpRequestInterceptor');
        $stateProvider
        .state('main', {
                url: '/',
                abstract: true,
                views: {
                  'lazyLoadView': {
                    controller: 'MainCtrl',
                    templateUrl: '/templates/layout.html',
                  }
                },
                resolve: {
                  loadMyCtrl: ['$ocLazyLoad', function($ocLazyLoad) {
                    return $ocLazyLoad.load({
                        serie: true,
                        name: 'main',
                        files: ['/js/services/SystemUserService.js','/js/controllers/CommonController.js']
                    });
                  }]
                }
            })
        .state('login', {
            url: '/login',
            views: {
              'lazyLoadView': {
                controller: 'LoginCtrl',
                templateUrl: '/templates/page-login.html',
              }
            },
            resolve: {
              loadMyCtrl: ['$ocLazyLoad', function($ocLazyLoad) {
                return $ocLazyLoad.load({
                    name: 'main',
                    files: [
                    '/js/services/CommonService.js',
                     '/js/services/SystemUserService.js',
                      '/js/controllers/CommonController.js']
                });
              }]
            }
        })
            
     
            .state('main.map/show', {
                url: 'map/show',
                controller: 'MapCtrl',
                views: {
                  'layout': {
                    templateUrl: '/templates/page-map.html',
                  }
                },
                resolve: {
                  loadMyCtrl: ['$ocLazyLoad', function($ocLazyLoad) {
                    return $ocLazyLoad.load({
                        name: 'main',
                        files: [
                        '/css/map.css',
                        '/js/services/StationService.js', 
                        '/js/services/DeviceService.js', 
                        '/js/controllers/MapController.js'
                        ]
                    });
                  }]
                }
            })

现在能按路由懒加载,但是,每个路由下要加载很多资源,想按照路由把资源打包下,这样进入该路由时,就不用发太多请求,有想过用webpack ,但不知道怎么做??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

放低过去 2022-09-11 11:24:19

我也是用ui-route管理路由,在合并压缩时采用的grunt,当然webpack应该也没问题。

建议:

1.按模块管理代码,将某view所需的js放到一个文件夹下,发布时只需合并当前文件夹下的所有js文件

2.你代码中的service因为多处使用,可以不用按需加载,单独压缩合并services/文件夹下js文件,在index.html中加载上即可。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文