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

Javascript 如何正确使用minify maven插件来缩小Angularjs应用程序中的js和css?,javascript,angularjs,maven,yui-compressor,Javascript,Angularjs,Maven,Yui Compressor,我正在尝试使用缩小我的angularjs应用程序中的Java脚本和css文件。我可以使用maven缩小所有js和css并构建war文件,但是在尝试打开应用程序url时,我得到了错误:[$injector:unpr]未知提供者:aProvider您的思路是正确的 请注意,当缩小控制器的JavaScript代码时,其所有函数参数也将缩小,依赖项注入器将无法正确识别服务 可以通过使用依赖项的名称(以字符串形式提供)注释函数来克服此问题,而这些名称不会缩小。有两种方法可以做到这一点: (1.)在保存字符

我正在尝试使用缩小我的angularjs应用程序中的Java脚本和css文件。我可以使用maven缩小所有js和css并构建war文件,但是在尝试打开应用程序url时,我得到了
错误:[$injector:unpr]未知提供者:aProvider您的思路是正确的

请注意,当缩小控制器的JavaScript代码时,其所有函数参数也将缩小,依赖项注入器将无法正确识别服务

可以通过使用依赖项的名称(以字符串形式提供)注释函数来克服此问题,而这些名称不会缩小。有两种方法可以做到这一点:

(1.)在保存字符串数组的控制器函数上创建
$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) {
   ...
}]);

有关更多信息,请查看本节的“缩小注意事项”部分。

还要注意mvn中的保留字,如“then”和“catch”

$http.get('some.json').then(convertResponse).catch(throwError);
可改写为:

$http.get('some.json')['then'](convertResponse)['catch'](throwError);
希望有人能提供更好的解决方案,这看起来真的很糟糕


更多关于使用maven而不是grunt构建前端的信息?我喜欢你的风格,你这个疯子gun@atmd当前位置我对angularjs不熟悉,对grunt了解不多。我们一直在使用maven为我们的服务器代码创建构建,这个应用程序也使用java rest端点,它打包在
WEB-INF>lib>[jar文件]
中。我只看了
为什么我应该使用Grunt?
一节,我只需要简化js和css,所以我认为在这一点上,我不应该只为了简化东西而使用Grunt。如果你仍然认为我需要和格伦特一起去,请纠正我。不,你走了一条可以理解的路线。如果在后端使用maven,那么在前端使用它是一个很好的理由。grunt的理由通常是使用使用您的软件所用语言编写的构建工具(即grunt脚本是用js编写的)。grunt的插件更侧重于前端(预编译器、minifyer等),例如。据我所知,maven必须将它连接到某个地方的罐子上(比如YUI之类的东西),所以我尝试了第二种方法并使用了
angular.min.js
,但我得到
错误:[$injector:unpr]http://errors.angularjs.org/1.2.27/$injector/unpr?p0=A提供程序%20%3C-%20a
chrome控制台中出现错误。将检查你的第一次进近,并将再次返回..只是为了确保。。。在尝试第二种方法之前,是否清除了浏览器的缓存?旁注:在声明指令和服务时,也应该使用相同的方法。有关更多信息,请参阅:也许这将帮助您找到导致此问题的代码部分。感谢在“服务与指令”中还有一些地方,我需要在这些地方进行一些更改。另外,将所有js和css文件分别合并到一个js和css文件中是否也很好?如果是的话,你能给我指一下吗?还有,我如何测试并确保性能提高了多少百分比(或任何单位)?
$http.get('some.json').then(convertResponse).catch(throwError);
$http.get('some.json')['then'](convertResponse)['catch'](throwError);