Javascript 使用网页包延迟加载角度模块

Javascript 使用网页包延迟加载角度模块,javascript,angularjs,webpack,lazy-loading,oclazyload,Javascript,Angularjs,Webpack,Lazy Loading,Oclazyload,我试图让延迟加载的角度模块与Webpack一起工作,但我遇到了一些困难。Webpack似乎正确地生成了拆分点,因为我看到创建了一个包含子应用程序代码的1.bundle.js,但我在加载页面时没有看到任何对1.bundle.js的请求,并且子应用程序没有初始化。console.log似乎从未启动过,它甚至没有达到$oclazyload初始化模块的程度 有几点我感到困惑 1) webpack会向服务器发出请求,还是我必须手动加载第二个包?(我两个都试过了,但都不起作用) 2) 如果我确实需要手动加载

我试图让延迟加载的角度模块与Webpack一起工作,但我遇到了一些困难。Webpack似乎正确地生成了拆分点,因为我看到创建了一个包含子应用程序代码的
1.bundle.js
,但我在加载页面时没有看到任何对
1.bundle.js
的请求,并且子应用程序没有初始化。
console.log
似乎从未启动过,它甚至没有达到
$oclazyload
初始化模块的程度

有几点我感到困惑

1) webpack会向服务器发出请求,还是我必须手动加载第二个包?(我两个都试过了,但都不起作用)

2) 如果我确实需要手动加载捆绑包,则应按什么顺序加载

3)
require.sure
的第三个参数假定允许您控制捆绑包的名称,但不管传递什么字符串,捆绑包的名称都是
1.bundle.js

4) 为什么我不能单步执行
require中的代码。请确保调试器中的
块?当我这样做时,我会在Chrome源代码视图中看到这一点:

undefined


/** WEBPACK FOOTER **
 ** 
 **/
(代码如下)

主要入口点代码:

'use strict';

import angular from 'angular';
import 'angular-ui-router';
import 'oclazyload';


angular.module('parentApp', [
  'ui.router',
])
  .config(['$urlRouterProvider', '$locationProvider', ($urlRouterProvider, $locationProvider) => {
    $urlRouterProvider
      .otherwise('/');

    $locationProvider.html5Mode(true);
  }])

  .config(['$stateProvider', ($stateProvider) => {
    $stateProvider
      .state('child-app', {
        url: '/child-app',
        template: '<child-app></child-app>',
        resolve: {
          loadAppModule: ($q, $ocLazyLoad) => {
            return $q((resolve) => {
              require.ensure(['./child-app/app.js'], (require) => {
                let module = require('./child-app/app.js');
                console.log(module);
                $oclazyload.load({name: 'childApp'});
                resolve(module.controller);
              });
            })
          }
        },
        controller: function() {
        }
      })
  }]);

该问题与
要求无关。请确保实施。这是因为
ocLazyLoad
的打包方式有些奇怪()。在我的例子中,修复很简单,我只是在模块依赖项中添加了
'oc.lazyLoad'

angular.module('parentApp', [
  'ui.router',
  'oc.lazyLoad'
])
为了回答我自己的两个问题,Webpack确实向服务器请求捆绑包,您不必手动加载捆绑包。有一个问题让我很困惑:
resolve
块如果包含一个无法解决的承诺,它将无声地失败。在我的例子中,
$ocLazyLoad.load()
失败,但没有失败的迹象。唯一的线索是状态提供程序没有向DOM添加
标记,这意味着它实际上是在初始化状态

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