Angular 9 ile Gelen Yenilikler

Angular günümüzde en çok kullanılan web ve mobile client-side uygulama frameworklerinden biridir. Cross platform çalışma, hız ve performans odaklı yapısıyla ön plana çıkan Angular, 2. sürümüyle köklü değişikler yaşamıştı. Bu yazıda geçtiğimiz aylarda duyurulan Angular 9 sürümüyle gelen yeniliklere göz atacağız.

Angular’ın önceki versiyonlarının en büyük problemi paket (bundle) boyutunun çok fazla olmasıydı. Bu sebeple indirme için harcanan zamanın artması uygulama performansını etkilemekteydi. Önceki versiyonda Ivy derleyicisi opsiyonel olarak sunulurken; Angular 9’un getirdiği en büyük özellik varsayılan olarak Ivy derleyicisi kullanmasıdır. Bununla beraber performansta önemli bir gelişme yakalamış oluyoruz. Bu sürümün önplana çıkan bir diğer özelliği ise bir component’i Routing veya Angular Module olmadan lazy load olarak yükleyebilir ve oluşturabilir olmamız.

Angular 9 ile gelen yenilikleri şöyle sıralayabiliriz:

  • Daha küçük paket boyutu ve performans artışı
  • Hızlı test etme
  • Daha iyi hata ayıklama imkanı
  • Geliştirilmiş CSS sınıfı ve stil bağlama
  • Geliştirilmiş tip kontrolü
  • Geliştirilmiş derleme hataları
  • Geliştirilmiş derleme süresi, varsayılan olarak AOT’u etkinleştirme
  • ProvidedIn için seçenekler
  • En son TypeScript versiyonu kullanımı

Yukarıdaki yeniliklere basit örneklerle kısaca göz atalım.

Daha Küçük Paket Boyutu

angular9_2

Angular 8 versiyonuna göre paket boyutu karşılaştırıldığında Angular 9 versiyonu ile birlikte küçük uygulamalarda %30’luk bir azalma görülürken büyük uygulamalarda %40’a varan azalma görülüyor.

Hızlı Test Etme

Ivy’de TestBed’in uygulanması, componentlerin testler arasında düzenlenmesini daha verimli hale getiriyor. Bu değişiklikle componentler testler arasında yeniden derlenmez. Testlerin yaklaşık %40 ile %50 arasında daha hızlı olacağını gözlemleyebiliriz.

Daha iyi hata ayıklama imkanı

Angular 9 hata ayıklamak için bazı teknikler ve araçlar kullanıyor. Bunlar;

  • Directive ve componentlerin nesnesine erişim istenebilir
  • applyChanges ile değişiklik algılama tetiklenebilir
  • Metotlar çağırılabilir ve güncellenebilir

Geliştirilmiş CSS Sınıfı ve Stil Bağlama

Önceki versiyonlarda uygulama bir stil için birden fazla tanım içeriyorsa bu stiller birbirinin yerine geçiyordu. Angular 9 ile birlikte zamana bağlı olmayan tutarlı bir öncelik sırasına göre stiller net bir şekilde yönetilebilir. Yeni gelen kurallar ile örneğimizde [style.color], [style] ile çakışan bağlamayı ezmiş oluyor. Örnek kullanımı aşağıda görebilirsiniz.
[style.color]="color1" [style]="{color: color2}" myDirective>

@Component({
  host: {
    style: "color:blue"
  },...
})
...

@Directive({
  host: {
    style: "color:black",
    "[style.color]": "property"
  },...
})

Geliştirilmiş tip kontrolü

Angular derleyicisi uygulamada daha fazla tip kontrolü yapar ve daha katı kurallar uygular. Bu özellik geliştirme sırasında hata yakalamayı kolaylaştırır. Angular 9 ile tip kontrolü için 2 ana flag(bayrak) sunuldu.

  • fullTemplateTypeCheck

Bu bayrak etkinleştiğinde derleyiciye her şeyi kontrol etmesini söyler. (ngIf, ngFor…)

  • strictTemplates

Bu bayrak etkinleştiğinde tip kontrolü için en katı tip sistemi kurallarını uygular.

Geliştirilmiş derleme hataları

Angular 9 ile gelen Ivy derleyicisi daha güçlü tip güvenliği sunar. Aynı zamanda tüm hata mesajlarının okunmasını kolaylaştırır.

Geliştirilmiş derleme süresi, varsayılan olarak AOT’u etkinleştirme

Ivy derleyicisi ile gelen iyileştirmeler ile birlikte development modunda iken AOT (Ahead-of-time) etkin bir şekilde geliyor. Componentler kullanıma bağlı olarak otomatik olarak derlenecek, entryComponents ve ng serve kullanmaya gerek kalmayacaktır.

ProvidedIn için seçenekler

Angular 9 ile birlikte providedIn değeri için Dependency Injection desteği eklenmiştir.

@Injectable({  
  providedIn: 'platform'  
})  
class MyService {...}

En son TypeScript versiyonu kullanımı

angular9_3

Bu yeni sürümde TypeScript 3.4 ile 3.5 desteği kalktı ve 3.7 versiyonu ile çalışacak hale getirildi. RxJS gibi bağımlılıkların versiyonu da güncellendi.

Kaynak: https://devnot.com/2020/angular-9-ile-gelen-yenilikler/