【问题标题】:AngularJS minified js files not workingAngularJS缩小的js文件不起作用
【发布时间】:2016-11-09 11:42:23
【问题描述】:

我将所有 js 文件压缩并合并为一个,并包含在 html 中,站点中没有任何内容。

js里面的文件太多了,不想一一包含,所以修改合并一并。

有没有其他方法可以减少对 js 文件的 http 调用次数。

【问题讨论】:

  • 您能分享一下您是如何定义控制器的吗?
  • 您可以尝试使用 CDN 来减少每个域的调用次数,但缩小和合并应该可以正常工作,我使用 webpack 和 Angular JS 没有问题。
  • @Greatym.com,你最后搞定了吗?

标签: javascript php jquery angularjs minify


【解决方案1】:

看来,这是implicit dependency injection 的原因。根据 Angular JS 文档:

小心:如果您打算缩小代码,您的服务名称将被重命名并破坏您的应用程序。

请改用strict dependency injection。例如:

angular
  .module("MyModule")
  .controller("MyCtrl", ["$scope", "$timeout", function ($scope, $timeout) {
    ...
  }]);

此外,考虑使用ng-annotate 会容易得多:

angular
  .module("MyModule")
  .controller("MyCtrl", function ($scope, $timeout) {
    "ngInject";
    ...
  });

【讨论】:

  • 我管理依赖。我将所有 js 文件缩小并合并为一个。角度 js 未定义。
  • @Greatym.com,请评论或删除您的app/ctrl/autoQuoteCtrl.js 文件中的第九行。 angular.element 与您实现的方式不同,因为默认使用 jqLit​​e 而不是 jQuery。
【解决方案2】:

如果您有这样的控制器,请跟进 @dayle-salmon 的回答

app.controller('DemoCtrl', function(dependency1, dependency2){
 // controller code
});

改成

app.controller('DemoCtrl', ['dependency1', 'dependency2', function(dependency1, dependency2){
 // controller code
}]);

原因 JS 缩小器通常会更改注入的依赖项的名称。 Angular 不会知道依赖是什么。所以,你手动声明它们,这样在缩小后就不会出现问题了!

【讨论】:

    【解决方案3】:

    在缩小 AngularJS 文档时,请务必遵循文档进行依赖注入,否则代码可能会中断。您应该确保您使用的是首选数组方法,示例如下:

       someModule.controller('MyController', ['$scope', 'greeter', function($scope, greeter) {
      // ...
    }]);
    

    见官方 Angular JS 文档:https://docs.angularjs.org/guide/di。

    【讨论】:

      猜你喜欢
      • 2017-05-13
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      相关资源
      最近更新 更多