2012-10-23 15 views
5

z ASP.NET sprzedaż wiązana z ScriptBundleSystem.Web.Optimization pozostają takie same dla pewnych funkcji

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

przekształca się

function StartController(n,t,i) {} 

Jednakże, jak używam angularjs , W przypadku zastrzyku zależnego do pracy w dalszym ciągu, nazwy argumentów nie mogą być zmieniane po zminimalizowaniu. Jak mogę zapewnić, że $ scope, $ location i $ rootScope zachowują te nazwy za pomocą minifikacji za pomocą składnika ScriptBundle, ale umożliwiają zmianę nazwy argumentów w innych miejscach?

Odpowiedz

3

To nie jest coś, co można zmienić na wbudowanych typach pakietów, ponieważ obecnie nie ujawniamy żadnych pokręteł, które można modyfikować na bazowych klasach przekształcania. Najlepszym sposobem na to jest napisanie własnego IBundleTransform, który dokonuje minyfikacji w odpowiednich ustawieniach, aby nie zmieniać zmiennych.

tj. coś takiego:

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()); 
+3

I okazuje się, że Angular ma inne zapiski, które pozwalają ich DI pracować z minifierami http://docs.angularjs.org/guide/di. –

+2

czy to nadal ma zastosowanie? Co to jest "MyMinifier"? – drzaus

2

Działa z System.Web.Optimizations Nuget pakować 1,1

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

(podaję parę innych pojęć z drodze)

Zasadniczo trzeba napisać nowy BundleTransform/Minifier, który udostępnia CodeSettings, dzięki czemu można zmienić NoAutoRenameCollection.

2

Angular zapewnia sposób radzenia sobie ze zminimalizowaniem. Jeśli definiujesz kontrolera można przepisać kod jako:

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

Na minifikacji, to będzie:

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

Można zrobić podobne rzeczy z innych elementów kątowych również.

Powiązane problemy