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.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
}]);
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);
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.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