gpt4 book ai didi

javascript - 如何正确使用 minify maven 插件来缩小 Angularjs 应用程序中的 js 和 css?

转载 作者:数据小太阳 更新时间:2023-10-29 04:17:01 26 4
gpt4 key购买 nike

我正在尝试使用 samaxes minify maven plugin 缩小我的 angularjs 应用程序中的 javascript 和 css 文件.我能够缩小所有 js 和 css 并使用 Maven 构建一个 war 文件,但是在尝试打开应用程序 url 时我得到 Error: [$injector:unpr] Unknown provider: aProvider <- a我的应用程序无法运行。

下面我提供我的pom插件配置

<plugin>
<groupId>com.samaxes.maven</groupId>
<artifactId>minify-maven-plugin</artifactId>
<version>1.7.4</version>
<executions>
<execution>
<id>min-js</id>
<phase>prepare-package</phase>
<goals>
<goal>minify</goal>
</goals>
</execution>
</executions>
<configuration>
<charset>UTF-8</charset>
<skipMerge>true</skipMerge>
<cssSourceDir>myapp/styles</cssSourceDir>
<jsSourceDir>myapp/javascript</jsSourceDir>
<jsEngine>CLOSURE</jsEngine>
<closureLanguage>ECMASCRIPT5</closureLanguage>
<closureAngularPass>true</closureAngularPass>
<nosuffix>true</nosuffix>
<webappTargetDir>${project.build.directory}/minify</webappTargetDir>
<cssSourceIncludes>
<cssSourceInclude>**/*.css</cssSourceInclude>
</cssSourceIncludes>
<cssSourceExcludes>
<cssSourceExclude>**/*.min.css</cssSourceExclude>
</cssSourceExcludes>
<jsSourceIncludes>
<jsSourceInclude>**/*.js</jsSourceInclude>
</jsSourceIncludes>
<jsSourceExcludes>
<jsSourceExclude>**/*.min.js</jsSourceExclude>
</jsSourceExcludes>
</configuration>

</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<webResources>
<resource>
<directory>${project.build.directory}/minify</directory>
</resource>
</webResources>
</configuration>
</plugin>

目录结构

enter image description here

我的 Controller 结构

'use strict';

angular.module('myApp').controller('MyController', function($scope, $filter, $location, $interval, ngTableParams, $modal, $transition, myService, $timeout) {
...
});

Chrome 控制台错误

enter image description here

是否samaxes minify maven plugin支持缩小 angularjs 应用程序还是我需要使用任何其他替代方案?

请帮助我缩小我的 angularjs 应用程序中的 js 和 css。

最佳答案

你走在正确的轨道上。

请注意,当您缩小 Controller 的 JavaScript 代码时,它的所有函数参数也会被缩小,依赖注入(inject)器将无法正确识别服务。

可以通过使用依赖项名称注释函数来解决此问题,以字符串形式提供,不会缩小。有两种方法:

(1.) 在包含字符串数组的 Controller 函数上创建一个$inject 属性。例如:

function MyController($scope, $filter, $location, $interval, ngTableParams, $modal, $transition, myService, $timeout) {...}
MyController.$inject = ['$scope', '$filter', '$location', '$interval', 'ngTableParams', '$modal', '$transition', 'myService', '$timeout'];

(2.) 使用内联注释,而不是仅仅提供函数,而是提供一个数组。在您的情况下,它看起来像:

angular.module('myApp').controller('MyController', ['$scope', '$filter', '$location', '$interval', 'ngTableParams', '$modal', '$transition', 'myService', '$timeout', function($scope, $filter, $location, $interval, ngTableParams, $modal, $transition, myService, $timeout) {
...
}]);

有关更多信息,请查看此 tutorial 的“关于缩小的说明”部分.

关于javascript - 如何正确使用 minify maven 插件来缩小 Angularjs 应用程序中的 js 和 css?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28765094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com