5

使用 ScriptBundle 捆绑 ASP.NET

function StartController($scope, $location, $rootScope) {}

被转化为

function StartController(n,t,i) {}

但是,当我使用 AngularJs 时,为了使依赖注入仍然有效,缩小时不得更改参数名称。如何确保 $scope、$location 和 $rootScope 通过 ScriptBundle 保持这些名称的缩小,但允许在其他地方重命名参数?

4

3 回答 3

3

这不是您可以在内置包类型上更改的内容,因为我们目前没有公开任何您可以在底层转换类上调整的旋钮。实现这一点的最佳方法是编写自己的 IBundleTransform ,它会在适当的设置中进行缩小以不重命名变量。

即类似的东西:

public class CustomTransform : IBundleTransform {
    public void process(BundleContext context, BundleResponse response) {
         response.Content = MyMinifier.MinifyWithoutRename(response.Content);
    }
}

BundleTable.Bundles.Add(new Bundle("~/bundles/mybundle", new CustomTransform());
于 2012-10-23T22:25:56.423 回答
2

这适用于System.Web.Optimizationsnuget 包 1.1

https://gist.github.com/zaus/7436601

(我在此过程中包含了一些其他概念)

CodeSettings本质上,您需要编写一个新的 BundleTransform/Minifier 来公开NoAutoRenameCollection.

于 2013-11-12T22:17:09.087 回答
2

Angular 提供了一种处理缩小的方法。如果您正在定义一个控制器,您可以将您的代码重写为:

YOUR_APP_MODULE.controller('CONTROLLER_NAME', ['$scope', '$location', '$rootScope', function($scope, $location, $rootScope){
    // DO STUFF
}]);

在缩小时,这将变为:

YOUR_APP_MODULE.controller('CONTROLLER_NAME', ['$scope', '$location', '$rootScope', function(n, t, i){
}]);

你也可以用其他角度组件做类似的事情。

于 2014-08-13T14:23:27.733 回答