Popüler geliştirme frameworklerinden biri olan Angular için büyük çaplı bir güncelleme yayınlanacak ve bunun için geri sayım başladı diyebiliriz.
Daha önceden 6 Şubat 2020 tarihinde Angular 9 ardından 25 Mart 2020 tarihinde 9.1 sürümü yayınlanmıştı.
Öncelikle Angular 10 aday sürümü test olarak açıldı buradan indirebilirsiniz.
İşte Angular 10 ile gelen yeni özellikler;
- Gerçek ngtsc derleyicisini saran bir derleyici arabirimi eklendiğini görüyoruz. Dil hizmetine özgü derleyici, gerektiğinde Scriptinfos oluşturarak, proje arabirimini kullanarak birden çok daktilo dosyasını yönetiyor.
- Derleyici için, özellik okumaları ve yöntem çağrıları için ad açıklıkları eklendi.
- Bir kırılma değişikliğinde jenerik için zorunlu hale getirildi
ModuleWithProviders
.ModuleWithProviders
Kalıbın Ivy derlemesi ve işleme boru hattı ile çalışması için genel bir tür parametresi gerekiyordu , ancak bu işlemden önce View Engine genel türün atlanmasına izin verdi. Bir geliştiriciModuleWithProviders
genel bir tür kullanmıyorsa , sürüm 10 geçişi kodu günceller. Ancak bir geliştirici View Engine kullanıyorsa ve genel türü atlayan bir kitaplığa bağlı olarak bir derleme hatası verilir. Bu durumda, ngcc yardımcı olmaz ve taşıma yalnızca uygulama kodunu kapsar. Kütüphanelerini düzeltmek için kütüphane yazarına başvurulmalıdır. Geçici bir çözüm olarak, skipLibChecks tsconfig içinde false olarak ayarlanabilir veya bir uygulama yalnızca Ivy'yi kullanacak şekilde güncellenir. - TypeScript 3.9 öne çıkarılarak ve TypeScript 3.8 desteği kaldırıldı. Bu çok büyük bir değişiklik olarak göze çarpıyor. TypeScript 3.6 ve TypeScript 3.7 de artık desteklenmeyecek.
- Derleyici için type kontrolü performansında iyileştirmeler yapılmıştır.
- Performansı artırmak için hesaplaması
basePaths
tembel hale getirildi, bu yüzden iş sadece gerektiğinde yapılırTargetedEntryPointFinder
. Daha önce,basePaths
bulucu her başlatıldığında hesaplanıyordu, bu da hedeflenen giriş noktasının zaten işlendiği durumda çaba kaybıydı. Burada bununda önüne geçilerek daha performaslı hale getirildi. - Birden çok çeviri dosyasının birleştirilmesi desteklendi. Önceden, yerel ayar başına yalnızca bir çeviri dosyasına izin veriliyordu. Artık kullanıcılar yerel ayar başına birden fazla dosya belirleyebilir ve her dosyadaki işlemler mesajlaşma kimliği ile birleştirebilir.
- Zaman uyumsuz kilitleme zaman aşımları yapılandırılabilir hale getirildi. Bu, AsyncLocker için
retryAttempts
veretryDelay
seçeneklerini ayarlamak için ngcc.config.js dosyasına eklemektedir. Entegrasyon testi, zaman aşımı için yeni bir kontrol ekliyor ve testin çok uzun sürmesini önlemek için zaman aşımı süresini azaltmak için ngcc.config.js'yi kullanıyor. - Son değişiklikte, bilinmeyen öğelere ilişkin uyarılar artık hata olarak kaydediliyor. Bu bir uygulamayı kırmayacak olsa da, console.error aracılığıyla hiçbir şeyin kaydedilmesini beklemeyen araçları açabilir.
- Bir başka kırılma değişikliğinde, geri dönen tüm çözümleyiciler
EMPTY
gezinmeyi iptal etmesi. Gezinmenin devam etmesine izin vermek için geliştiricilerin, çözümleyicileri gibi bazı değerleri güncelleştirmesi gerekiyor.default!Empty
. - Meta verilere bağımlılık bilgisi ve ng-content seçicilerinin eklenmesi. Bu önerilen derleyici özellik kütüphanelerde belirlenen yönergeler / bileşenleri için öneriler sunmak için yeteneği sunan böyle Angular Language Servisi gibi araçları için yararlı ek meta sağlayacaktır.
- Giriş noktası bildiriminin boyutunu ve bildirimdeki önbellekleme tekniğini azaltarak elde edilen performans iyileştirildi. Ek olarak, bağımlılıkların önbelleğe alınması giriş noktası manifestinde yapılır ve her seferinde hesaplanmak yerine oradan okunuyor. Önceden, bir giriş noktasının işlenmesine gerek olmasa bile, ngcc (Angular Ivy uyumluluk derleyicisi) bağımlılıkların hesaplanması için giriş noktasının dosyalarını ayrıştırıyordu ve bu da large_node modülleri için çok zaman alıyordu.
- Son değişiklikte, gece yarısını geçen biçimlendirme gün periyotları ile ilgili olarak güncellendi. Bir kodu
b
veyaB
biçim kodu ile biçimlendirirken , oluşturulan dize günleri kapsayan gün periyotlarını düzgün işlemiyordu. Bunun yerine, mantık varsayılan durumuna geri dönüyorduAM
. Bu mantık, gece yarısını geçen bir gün içindeki zamanlarla eşleşecek şekilde güncellendiğindenat night
, İngilizce gibi doğru çıktıyı verecektir . Birini kullanarak uygulamalarformatDate()
veyaDatePipe
veyab
veB
biçim kodları bu değişiklikten etkilenecektir. - Yönlendirici için
CanLoad
koruma şimdiUrltree
. GeriCanLoad
dönen bir görevliUrltree
mevcut navigasyonu iptal ediyor ve yönlendiriyor. BuCanActivate
, ayrıca eklenen korumaların kullanabileceği geçerli davranışla da eşleşmektedir. Ancak bu önyüklemeyi etkilemez. BirCanLoad
koruma herhangi bir ön yüklemeyi engeller;CanLoad
yollar önceden yüklenmeyecek ve korumalar ön yüklemenin bir parçası olarak yürütülmeyecektir. - Bir mikrosintaks ifadesinin ParsedProperty'ye bağlanmasıyla doğru değerin yayılması, bu da yayılımı şablon AST'lerine (hem VE hem de Ivy) yayar. Bu teklif derleyici için de geçerlidir.
- Çekirdeğe yönelik bir düzeltmede , Angular özellikler kullanan, dekore edilmemiş sınıfların türetilmiş sınıflarını süslemek için dekorsuz sınıf geçişine mantık eklenebiliyor.
- Son değişiklikte, Urlmatcher'ın türü her zaman null döndürebileceğini yansıtacaktır.
- Servis çalışanı için, uzun süren bir görev veya yinelenen bir zaman aşımı olduğunda servis çalışanının asla kaydolamayacağı bir durum için bir düzeltme yapılmıştır .
- Bir holey dizisinde tanımlanmamış ifadelerden kaçınan derleyici ve var olmayan bir sembol içe aktarıldığında bir geçiş hatasını önleyen çekirdek de dahil olmak üzere bir dizi hata düzeltmesi yapılmıştır . Çekirdekte Terser satır içi hatası için de bir geçici çözüm var . Başka bir hata düzeltmesi , TestBed'deki geçersiz kılmalardan etkilenen modülleri düzgün bir şekilde tanımlar .
- Açısal NPM artık Closure Compiler'ın gelişmiş optimizasyonlarını desteklemek için belirli jsdoc yorumları içermiyor. Bu çok büyük bir değişiklik. Closure Compiler kullanan herkes, NPM'de yayınlanan sürümleri kullanmasa da doğrudan kaynaklardan oluşturulan Açısal paketleri kullanmaktan daha iyidir. Geçici bir çözüm olarak, kullanıcılar şu anki derleme boru hatlarını Kapatma flagları kullanmayı düşünebilirler
--compilation_level=SIMPLE
. Bu flag, gelişmiş optimizasyonların devre dışı bırakılması nedeniyle artırılmış taşıma kapasitesi boyutunda maliyetle oluşturulabilir, çalıştırılabilir yapay nesneler üretmesini sağlayacaktır.