当前位置: 首页 > 知识库问答 >
问题:

AngularJS与Webpack集成

督坚白
2023-03-14

我正在寻找一些关于使用webpack的帮助,用于一个大型AngularJS应用程序。我们使用基于特性的文件夹结构(每个特性/页面都有一个模块,它们有控制器、指令)。我已经成功地配置了webpack,使其能够与Grunt一起工作,生成一个包。我想创建块,因为它将是一个大的应用程序,我们想要加载模块(页面/特征)工件异步。

我将通过一些webpack示例使用require([deps],fn)语法使用“code splitting”。然而,我不能得到块懒惰加载。首先,我不知道具体在哪里,我需要在AngularJS将用户路由到下一个页面之前导入这些块。我正在努力找到一个明确的责任分工。

有人给我指出了一个示例AngularJS应用程序,其中webpack用于在每条路由之后异步加载控制器/指令/html" target="_blank">过滤器?

下面的几个链接是:我应该使用Browserify还是Webpack来惰性加载angular 1.x中的依赖项https://github.com/petehunt/webpack-howto#9-async-loading http://dontkry.com/posts/code/single-page-module-with-webpack.html

共有1个答案

步博涉
2023-03-14

Sagar Ganatra写了一篇关于代码拆分的有帮助的博客文章。

令人惊讶的是,Angular的模块系统并不真正支持代码拆分。但是,有一种方法可以通过在配置阶段保存对Angular的特殊提供程序的引用来实现代码拆分。

[...]当Angular初始化或引导应用程序时,函数-控制器、服务等。在模块实例上可用。在这里,我们是懒惰地加载组件,功能在稍后的时间不可用;因此,我们必须使用各种提供程序函数并注册这些组件。提供程序仅在config方法中可用,因此当应用程序初始化时,我们必须在config函数中存储这些提供程序的引用。

window.app.config([
    '$routeProvider',
    '$controllerProvider',
    '$compileProvider',
    '$filterProvider',
    '$provide',
    function ($routeProvider, $controllerProvider, $compileProvider, $filterProvider, $provide) {

        $routeProvider.when('/login', {
            templateUrl: 'components/login/partials/login.html',
            resolve: {
                load: ['$q', '$rootScope', function ($q, $rootScope) {

                    var deferred = $q.defer();

                    // lazy load controllers, etc.
                    require ([
                        'components/login/controllers/loginController',
                        'components/login/services/loginService'
                    ], function () {

                        $rootScope.$apply(function () {
                            deferred.resolve();
                        });

                    });

                    return deferred.promise;
                }]
            }
        });


        //store a reference to various provider functions
        window.app.components = {
            controller: $controllerProvider.register,
            service: $provide.service
        };

    }
]);
app.components.controller('loginController');
 类似资料:
  • 问题内容: 我正在尝试使用angularjs和webpack运行简单的应用程序,这是我的代码: index.html app.js Webpackconfig.js main.js bundle.js 我也看到了这个:https : //github.com/jeffling/angular-webpack- example 问题是我如何正确运行? 问题答案: bundle.js 由webpack

  • angularjs-webpack-starter The goal of this repository is to demonstrate a modern frontend setup for AngularJS projects, in such a way that it gets closer to how things are done with Angular. This proj

  • 问题内容: 我是Angular和Flot的新手,但对Jquery和Javascript经验丰富。我对如何将Flot图表绑定到Angular数据模型感到有些困惑,因为Flot是一个JQuery插件。我到处搜寻,但找不到范例。 我也很乐意使用highcharts,google-charts或任何其他图表解决方案。 问题答案: 由于制图涉及大量的DOM操作,因此使用指令是可行的。 数据可以保存在控制器中

  • 问题内容: 我有一个角度应用程序,其中包含一个从示例中获取的保存按钮: 这对于客户端验证非常有用,因为当用户解决问题时它会变为false,但是我有一个电子邮件字段,如果另一个用户使用相同的电子邮件注册,则该字段设置为无效。 一旦我将电子邮件字段设置为无效,就无法提交表单,并且用户无法修复该验证错误。所以现在我不能再使用来禁用我的提交按钮。 肯定有更好的办法 问题答案: 我在几个项目中都需要这样做,

  • 问题内容: 我正在将我的ASP.NET Core应用程序升级到V3,并使用Visual Studio 2019进行开发/调试。除此之外,整个过程很顺利: UseWebpackDevMiddleware不再是:https : //github.com/aspnet/AspNetCore/issues/12890。 我现在希望了解每次调试时VS运行webpack的最佳方法,最好是仅在已更改的JS代码上