27

yolu Asp.Net MVC4 js dosyaları & küçültme özelliği küçültür donatılacak özelleştirmek için bir yolu var mı?Mvc4 donatılacak, küçültme ve angularjs hizmetleri

Anlamı, ben "olduğu gibi" sadece angularjs kırar tamamen minification kapatmak istiyorum, ama yok.

kez minified
function MyController($scope) { } 

, olur: angularjs yana

aşağıdaki kontrolörler hizmet enjekte için I ve IoC yaklaşımı kullanan bir sorun olmaz

function MyController(n) { } 

Normalde, ama angularjs Hangi servisin enjekte edileceğini anlamak için parametre isimlerini kullanır. Yani, $ kapsamı, açısal denetleyicilerdeki diğer parametrelerin yanı sıra $ kapsamı olarak kalmalıdır. Yerel değişkenler gibi diğer her şey normal olarak minimize edilmelidir.

Ben Mvc4 minification nasıl yapılandırılacağı üzerinde herhangi net belgelerine bulamıyor ve "ya hep ya hiç" bu yüzden ben bir şey eksik düşünüyorum olmak için oldukça aptal görünüyor.

Teşekkürler. "güvenli küçültme" yani

+0

Teknik olarak http://stackoverflow.com/questions/13032721/system-web-optimization-making-function-argument-names-stay-the-same-for-certain dosyasının bir kopyası, cevap mantıklı. – drzaus

+0

http://stackoverflow.com/questions/17410012/customizing-net-4-5-bundler-minifier – drzaus

cevap

45

Aslında size (ve!) angularjs kodunu yazabilirsiniz. Detaylar http://docs.angularjs.org/guide/di ait "Bağımlılık Ek Açıklama" bölümünde ama kısaca açıklanmıştır, genel olarak tanımlanmış denetleyicileri için yazabilirsiniz:

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

genel olarak tanımlanmış kontrolörler genel ad alanını kirletmektedir (ayrıntılı bilgi için this bakınız) lütfen unutmayın ve kaçınılmalıdır. Eğer bir modül düzeyinde bir denetleyici bildirirseniz bunu küçültme-de güvenli yapabilirsiniz:

angular.module('mymodule', []).controller('MyController', ['$scope', function($scope){ 
//controller code goes here 
}]); 
+1

Tarafından da adlandırılan bu soru, aynı zamanda yakında ele alacağım bir başka sorun da oldu. klasik "bir taşlı iki kuş". Teşekkür ederim. –

+0

Teşekkürler !!! Bu benim için işe yaradı :) –

1

yine (küçültmek ve ne değildir ne kontrol etmek istiyorsanız veya tarafından zaten minified versiyonunu eklemek istiyorsanız eklenti satıcı) sadece iki teklik beyan ve yalnızca BundleConfig.cs bunların birini küçültmek: istemeyenler olanlar için

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

Sanırım tersi demek istiyorsun - küçültme dönüşümünü "dontMinify.Transforms.Clear()" ile açıkça kaldırmanız gerekiyor. – drzaus

1

/"küçültme güvenli yazmaya arsed olamaz "açısal-DI sözdizimi ve değişken isimleri önemsemeyin, BundleTransfomer'i Yui Js minifier ile birlikte kullandım - nuget yoluyla kullanılabilir:

Install-Package BundleTransformer.Core 
Install-Package BundleTransformer.Yui 

Minifikasyon/gizleme üzerinde ÇOK ince taneli kontrol sağlar. Açısal dünyada, yui web.config bölümündeki obfuscateJavascript'i yanlış olarak ayarlamanız yeterlidir.

İlgili konular