2016-10-17 11 views
6

bu hayal:CSS sınıflarınız için bir bileşen özelliği üzerinden dinamik bir ad alan eklemek için performans/yükleme yapmak kötü mü?

export class MyComponent { 

    namespace: string; 

    constructor(private globals: Globals) { 
    this.namespace = globals.namespace; 
    } 
} 

Ve sonra böyle şablonu: Bu, tam hiçbir 3. parti stilleri gibi stil üzerinde kontrolü (veya çok değil olacağından çok çok az verir

<div class="{{namespace}}-wrapper"> 
    <h1 class="{{namespace}}-title"></h1> 
    <h2 class="{{namespace}}-subtitle"></h2> 
</div> 

aynı ad alanı ve sonekler) kendi stillerinize müdahale edebilir, ancak performans hakkında ne düşünüyorsunuz? Buna göre şablon başına ortalama olarak 20 ciltleme yaptığımı varsayalım, bu yaklaşımı kullanmayı düşünmemenizi sağlayacak şekilde performansı etkiler mi?

Teknik olarak, yalnızca bir kez bağlandığı için performansı etkilememeli, ancak bunu yaparak yükleme süresi artabilir. Bunu test etmek için sağlam bir yol bulamadım, bu yüzden kesin bir şey bilmiyorum.

Görünüm kapsüllemeyi biliyorum ancak bunu kapatmamı ve hala hiçbir şeyin kırılmayacağından emin olmamı sağlayan bir yaklaşıma sahip olmak istiyorum.

belki bunu başarmak için daha iyi bir yolu var mı yoksa bu gayet iyi bir yaklaşımdır?

cevap

3

Angular2'de tek seferlik bir bağ yoktur. Her defasinda degisiklik algilama çalisirsa, bu baglantilarda kullanilan özellikler degisiklikler için kontrol edilir.

Angular2 değişimi saptama oldukça verimli ve daha ChangeDetectionStrategy.OnPush kullanılarak optimize edilebilir. Şablon başına yaklaşık 20 bağlamaları varsa

bütün bu uygulama için oldukça büyük bir toplam sayısı olabilir ve bu performansına zarar beklersiniz.

Bunun neden yükleme süresine zarar verebileceğine dair bir neden göremiyorum.

+0

Peki ne yaptığımı önerirsiniz? – Chrillewoodz

+0

Varsayılan görünüm kapsüllemesi kullanın. Onunla ilgili sorunun ne olduğunu anlamıyorum. Ayrıca, diğer seçicileri de kullanabilirsiniz, örneğin, şablonundaki her öğeye değil, yalnızca her bileşene tek bir sınıf bağlamanız gerekir. –

+0

Tamam, sanırım başka bir çözüm elle yazmaktır .. ve eğer bir ctrl + shift + f aramasına ve değiştirilmesi gerektiğine inanıyorsa da, bu büyük bir çözüm olmasa da yeterli olabilir. – Chrillewoodz

İlgili konular