Mvc4捆绑,缩小和AngularJS服务

Mat*_*sca 27 asp.net-mvc asp.net-mvc-4 angularjs bundling-and-minification

有没有办法自定义Asp.Net MVC4捆绑和缩小功能缩小js文件的方式?

意思是,我不想完全关闭缩小,但"按原样"它只是打破了AngularJs.

由于AngularJs使用DI和IoC方法在控制器中注入服务,因此如下:

function MyController($scope) { }
Run Code Online (Sandbox Code Playgroud)

一旦缩小,变为:

function MyController(n) { }
Run Code Online (Sandbox Code Playgroud)

通常这不会有问题,但AngularJs使用参数名来了解要注入的服务.所以$ scope应保持$ scope,以及angular控制器中的任何其他参数.其他所有东西,如局部变量等,都应该正常缩小.

我找不到关于如何配置Mvc4缩小的任何明确的文档,它似乎相当愚蠢,因为它是"全有或全无",所以我想我错过了一些东西.

谢谢.

pko*_*rce 45

实际上你可以(并且应该!)编写AngularJS代码,这样它就是"缩小安全性".详细信息在http://docs.angularjs.org/guide/di的"依赖关系注释"部分中描述,但简而言之,对于全局定义的控制器,您可以编写:

MyController.$inject = ['$scope'];

请注意,全局定义的控制器正在污染全局命名空间(有关更多详细信息,请参阅内容),应避免使用.如果您在模块级别声明控制器,您也可以使其安全性最小化:

angular.module('mymodule', []).controller('MyController', ['$scope', function($scope){
//controller code goes here
}]);
Run Code Online (Sandbox Code Playgroud)