Usługi wiązania, minifikacji i AngularJS Mvc4

Czy jest sposób, aby dostosować sposób Asp.Net funkcja łączenia i minifikacji MVC4 minimalizuje Pliki js?

To znaczy, nie chcę całkowicie wyłączać minifikacji, ale "jak jest" to po prostu łamie AngularJs.

Ponieważ AngularJs używa podejścia DI i IoC do iniekcji usług w kontrolerach, to:

function MyController($scope) { }

Po zminiaturyzowaniu staje się:

function MyController(n) { }

Normalnie nie byłoby to problemem, ale AngularJs używa nazw parametrów, aby zrozumieć, która usługa wstrzyknięcie. Tak więc $scope powinien pozostać $scope, tak jak każdy inny parametr w sterownikach kątowych. Wszystko inne, jak zmienne lokalne, itp., powinno być minifigurowane normalnie.

Nie mogę znaleźć żadnej jasnej dokumentacji, jak skonfigurować Minifikację Mvc4, i wydaje się to dość głupie, aby to było "wszystko albo nic", więc myślę, że coś mi umyka.

Dzięki.
Author: tereško, 2013-02-16

3 answers

Właściwie możesz(i powinieneś!) napisz Kod AngularJS, aby był "bezpieczny dla minifikacji". Szczegóły są opisane w sekcji" Adnotacja zależności " http://docs.angularjs.org/guide/di ale w skrócie, dla kontrolerów zdefiniowanych globalnie można napisać:

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

Należy pamiętać, że globalnie zdefiniowane Kontrolery zanieczyszczają globalną przestrzeń nazw (zobacz to Po Więcej szczegółów) i należy ich unikać. Jeśli deklarujesz kontroler na poziomie modułu, możesz go minifikacja-również bezpieczna:

angular.module('mymodule', []).controller('MyController', ['$scope', function($scope){
//controller code goes here
}]);
 45
Author: pkozlowski.opensource,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:17

Jeśli nadal chcesz kontrolować, co minifikować, a co nie (lub jeśli chcesz dołączyć już minifikowaną wersję przez dostawcę wtyczki), po prostu zadeklaruj dwa pakiety i tylko minifikuj jeden z nich na swoim BundleConfig.cs:

var dontMinify = new Bundle("~/bundles/toNotMinify").Include(
                        "~/Scripts/xxxxx.js");
bundles.Add(dontMinify);

var minify = new Bundle("~/bundles/toNotMinify").Include(
                        "~/Scripts/yyyyyy.js");
minify.Transforms.Add(new JsMinify());
bundles.Add(minify);
 1
Author: amhed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-16 14:34:20

Dla tych z Was, którzy nie chcą / nie mogą być arsed, aby napisać składnię" minification-safe " angular-DI, i nie obchodzi mnie, że nazwy zmiennych są zaciemniane, użyłem BundleTransfomer wraz z Yui js minifier-dostępny przez nuget:

 Install-Package BundleTransformer.Core
 Install-Package BundleTransformer.Yui
Daje bardzo drobnoziarnistą kontrolę nad minifikacją/zaciemnieniem. W kanciastym świecie po prostu ustaw obfuscateJavascript w sieci yui.sekcja config na false.
 1
Author: Gumzle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-15 09:53:27