Angular 10.1'deki yenilikler

Angular 10'un takip noktası sürümü olan Angular 10.1.0, 2 Eylül'de yayınlandı ve yeni bir mesaj çıkarma aracıyla birlikte derleyici ve yönlendiriciye performans iyileştirmeleri getirdi. 

Angular 10, 24 Haziran'da bir üretim sürümü olarak genel kullanıma sunuldu. Google tarafından geliştirilen, TypeScript tabanlı çerçeveye yapılan büyük yükseltme, yeni özelliklerden çok kalite, araç ve ekosistem iyileştirmelerine daha fazla önem verdi.

Angular 10, Angular'ın önceki sürümlerinden daha küçüktür. Yeni yetenekler, Angular Material UI bileşen kitaplığında yeni bir tarih aralığı seçici ve CommonJS içe aktarmaları için uyarıları içerir. CommonJS içe aktarma uyarıları, CommonJS ile paketlenmiş bir bağımlılık, geliştiricilerin bir ECMAScript modül paketini değiştirmesine izin vererek daha büyük, daha yavaş uygulamalara neden olabileceği zaman geliştiricileri uyarır.

Ayrıca, isteğe bağlı daha katı ayarlar ng new, via ile yeni bir çalışma alanı oluştururken daha katı bir proje kurulumu sunar ng new --strict. Bu bayrağın etkinleştirilmesi, sürdürülebilirliği iyileştirmek, hataları yakalamaya yardımcı olmak ve CLI'nin bir uygulamada gelişmiş optimizasyonlar yapmasına izin vermek için yeni ayarlarla yeni bir proje başlatır.

Angular 10 nereden indirilir

Angular 10'un genel sürümünü GitHub'da bulabilirsiniz. Mevcut Angular kurulumunuzu güncellemek için şu komutu çalıştırabilirsiniz:

ng güncelleme @ angular / cli @ angular / core

Angular 10.1.0'daki yeni özellikler

GitHub'da bulunan Angular 10.1.0 sürümü, aşağıdaki yeni özellikleri ve geliştirmeleri içerir: 

  • Derleyicide performansı artırmak için, Angular 10.1, artımlı program yeniden kullanımını etkileyen performans regresyonları için bir düzeltme içerir.
  • Yönlendirici performansı için, korumaları prioritizedGuardValueoptimize etmek için operatör uygulanıyor CanLoad.
  • ProgramBasedEntryPointFinderEntryPointManifestmümkün olduğunda giriş noktası bağımlılıklarını yüklemek için yeniden kullanır, bu da her ngcc çağrısında onları yeniden ayrıştırmak zorunda kalmaz.
  • Sonunda CLI'ye entegre edilecek olan yeni bir mesaj çıkarma aracı desteklenmektedir.
  • Bazel oluşturma aracı LinkabablePackageInfoiçin, ng-modulekurala ekleniyor ve bağlayıcının ng_moduleNode.js çalışma zamanı eylemlerinde hedefleri doğru şekilde bağlamasına izin veriyor .
  • Statik değerlendirme hataları için üretilen tanılamaya daha fazla içgörü eklenir.
  • Mutlak URL HTTP desteği için bir seçenek eklendi.
  • Derleyiciye TypeScript 4.0 desteği eklendi.
  • canparse() teşhisler açığa çıkar.
  • Yönlendirici, formlar, derleyici CLI ve ngcc derleyici uyumluluk aracında performans iyileştirmeleri yapılmıştır.
  • Yaşam döngüsü kancalarının değiştirilmesi, önyükleme işleminden önce herhangi bir zamanda yapılabilir.
  • Çekirdek, yönlendirici ve Angular'ın diğer bölümleri için bir dizi büyük düzeltme sunulmaktadır.

Angular 10'daki yeni özellikler

Angular 10'un temel özellikleri şunları içerir:

  • TypeScript için yardımcı işlevler içeren çalışma zamanı kitaplığı olan TSlib, TSlib 2.0'a güncellendi. TypeScript için TSLint statik analiz aracı TSLint 6'ya güncellendi.
  • Gerçek ngtsc derleyicisini saran bir derleyici arabirimi eklendi. Dil hizmetine özel derleyici, proje arayüzünü kullanarak birden çok tip kontrol dosyasını yönetir ve gerektiğinde Scriptinfos oluşturur.
  • Yeni projeler için tarayıcı yapılandırması, daha eski ve daha az kullanılan tarayıcıları hariç tutacak şekilde güncellendi. Internet Explorer 9, Internet Explorer 10 ve Internet Explorer Mobile için destek kullanımdan kaldırılmıştır.
  • Angular Package Format artık ESM5 veya FESM5 paketlerini içermez, çalışırken yarnveya npm installAngular paketleri ve kitaplıkları için indirme ve yükleme süresinden tasarruf sağlar .
  • Derleyici için, özellik okumaları ve yöntem çağrıları için ad yayılımları eklenmiştir.
  • EntryPointFindertsjconfig.json dosyasıyla belirtilen bir programda içe aktarmalardan başlatılabilen program tabanlı bir giriş noktası bulucu eklenmiştir. Bunun, DirectoryWalkerEntryPointFinderaktif programın kurulu giriş noktalarının yalnızca küçük bir kısmını içe aktarmasından daha hızlı olması beklenmektedir . 
  • Otomatik tamamlama, &sorgulanabilir değer ve bir performans sorunu gibi HTML varlıklarından kaldırılıyor .
  • Açık eşleme, kapanıştan devmode dosyalarına kadar açığa çıkıyor. Bu özellik, üretim yapısı girdilerini geliştirme modu eşdeğerlerine çevirmek zorunda olan geliştirme araçlarını hedeflemektedir.
  • Son bir değişiklikte jenerik için zorunlu hale getirildi ModuleWithProviders. ModuleWithProvidersModelin Ivy derleme ve oluşturma ardışık düzeniyle çalışması için genel bir tür parametresi gerekliydi , ancak bu işlemden önce View Engine, genel türün atlanmasına izin verdi. Bir geliştirici ModuleWithProvidersgenel bir tür olmadan kullanıyorsa , sürüm 10 geçişi kodu güncelleyecektir. Ancak, bir geliştirici View Engine kullanıyorsa ve genel türü atlayan bir kitaplığa bağlı olarak, bir derleme hatası verilecektir. Bu durumda ngcc yardımcı olmayacak ve geçiş sadece uygulama kodunu kapsayacaktır. Kütüphanesini düzeltmek için kütüphane yazarıyla iletişime geçilmelidir. Geçici bir çözüm olarak, skipLibChecks tsconfig'de false olarak ayarlanabilir veya bir uygulamayı yalnızca Ivy'yi kullanacak şekilde güncelleyebilir.
  • TypeScript 3.9, kaldırılmış olan TypeScript 3.8 desteğiyle birlikte artık öne çıkmaktadır. Bu son derece önemli bir değişikliktir. TypeScript 3.6 ve TypeScript 3.7 de artık desteklenmemektedir.
  • Derleyici klibine tür denetimi performans iyileştirmeleri yapılmıştır.
  • Performansı artırmak için, hesaplama basePathstembel hale getirildi, bu nedenle iş yalnızca gerektiğinde yapılır TargetedEntryPointFinder. Önceden, basePaths bulucu her somutlaştırıldığında hesaplanıyordu ve bu, hedeflenen giriş noktasının zaten işlendiği durumda bir çaba israfıydı.
  • Birden çok çeviri dosyasının birleştirilmesi desteklenmektedir. Ö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 mesaj kimliği ile birleştirilecektir.
  • Zaman uyumsuz kilitleme zaman aşımları yapılandırılabilir. Bu, AsyncLocker için retryAttemptsve retryDelay seçeneklerini ayarlamak için ngcc.config.js dosyasına destek ekler . Bir entegrasyon testi, bir zaman aşımı için yeni bir denetim ekler ve testin çok uzun sürmesini önlemek için zaman aşımı süresini azaltmak için ngcc.config.js'yi kullanır.
  • Son bir değişiklikte, bilinmeyen öğelerle ilgili uyarılar artık hata olarak günlüğe kaydedilir. Bu bir uygulamayı bozmayacak olsa da, console.error aracılığıyla hiçbir şeyin günlüğe kaydedilmesini beklemeyen araçları çalıştırabilir. 
  • Bir başka önemli değişiklikte, dönen herhangi bir çözümleyici EMPTYnavigasyonu iptal edecektir. Gezinmenin devam etmesine izin vermek için, geliştiricilerin, gibi bazı değerleri güncellemek için çözücüleri güncellemeleri gerekir default!Empty.
  • Bağımlılık bilgilerinin ve ng içeriği seçicilerin meta verilere eklenmesi. Önerilen bu derleyici özelliği, Angular Language Service gibi araçlar için yararlı ek meta veriler sağlayarak, kitaplıklarda tanımlanan yönergeler / bileşenler için öneriler sunma yeteneği sunar.
  • Giriş noktası bildiriminin boyutunu ve bildirimdeki önbelleğe alma tekniğini azaltarak elde edilen performans iyileştirmeleri. Buna ek olarak, bağımlılıkların önbelleğe alınması giriş noktası bildiriminde yapılır ve her seferinde hesaplanmak yerine oradan okunur. Önceden, bir giriş noktasının işlemeye ihtiyacı olmasa bile, ngcc (Angular Ivy uyumluluk derleyicisi), bağımlılıkları hesaplamak için giriş noktası dosyalarını ayrıştırırdı, bu da büyük_od modülleri için çok zaman alırdı.
  • Ngcc performansını iyileştirmek için artık eski bir kilit dosyasının anında raporlanmasına izin verilmektedir. Ek olarak, ayrıştırılmış bir tsconfig dosyasının önbelleğe alınmış bir kopyası saklanır ve tsconfig yolu aynıysa yeniden kullanılabilir.
  • Son bir değişiklikle, gece yarısını kesişen gün dönemlerini biçimlendirmeyle ilgili mantık güncellendi. bVeya Bbiçim koduyla bir zamanı biçimlendirirken , işlenen dize, günlere yayılan gün dönemlerini düzgün şekilde işlemiyordu. Bunun yerine, mantık varsayılan durumuna geri dönüyordu AM. Bu mantık, gece yarısını geçen bir gün periyodu içindeki zamanlarla eşleşecek şekilde güncellendi, böylece artık at nightİngilizce örneğinde olduğu gibi doğru çıktıyı oluşturacak . formatDate()Veya DatePipeveya bve  Bbiçim kodlarını kullanan uygulamalar bu değişiklikten etkilenecektir.
  • Yönlendirici için CanLoadkoruma şimdi geri dönebilir Urltree. Geri CanLoaddönen bir koruma, Urltreemevcut navigasyonu ve yönlendirmeleri iptal eder. Bu CanActivate, eklenen korumaların mevcut davranışıyla eşleşir . Bu, ön yüklemeyi etkilemez. Bir CanLoadkoruma, herhangi bir ön yüklemeyi engeller; Korumalı rotalar CanLoadönceden yüklenmeyecek ve korumalar ön yüklemenin bir parçası olarak uygulanmayacaktır.
  • Bir mikrosintax ifadesinin ExpressionBinding'de ParsedProperty'ye doğru değer aralığının yayılması, bu da aralığı şablon AST'lere (hem VE hem de Ivy) yayar. Bu öneri aynı zamanda derleyici içindir.
  • Çekirdeğe yapılan bir düzeltmede, Angular özellikleri kullanan, dekore edilmemiş sınıfların türetilmiş sınıflarını dekore etmek için, dekore edilmemiş sınıf geçişine mantık eklenebilir.
  • Son bir değişiklikte, Urlmatcher'in türü her zaman null döndürebileceğini yansıtacaktır.
  • Servis çalışanı için, uzun süren bir görev veya tekrar eden zaman aşımı olduğunda servis çalışanının asla kaydolmama ihtimalinin olduğu bir durum için bir düzeltme getirildi.
  • Derleyicinin bir delikli dizide tanımsız ifadelerden kaçınması ve varolmayan bir sembol içe aktarıldığında bir geçiş hatasını önleyen çekirdek dahil olmak üzere bir dizi hata düzeltmesi yapılmıştır. Çekirdekte Terser inlining hatası için bir geçici çözüm de var. Başka bir hata düzeltmesi, TestBed'deki geçersiz kılmalardan etkilenen modülleri doğru şekilde tanımlar.
  • Angular NPM artık Closure Compiler'ın gelişmiş optimizasyonlarını desteklemek için belirli jsdoc açıklamalarını içermiyor. Bu son derece önemli bir değişikliktir. Paketlerdeki Closure Compiler desteği deneyseldir ve bir süredir kesilmiştir. Closure Compiler'ı kullanan herkes, NPM'de yayınlanan sürümleri tüketmek yerine doğrudan kaynaklardan oluşturulan Angular paketleri kullanmaktan daha iyidir. Geçici bir çözüm olarak, kullanıcılar mevcut derleme ardışık düzenlerini Kapatma bayrağıyla kullanmayı düşünebilirler --compilation_level=SIMPLE. Bu bayrak, gelişmiş optimizasyonların devre dışı bırakılması nedeniyle artırılmış yük boyutu maliyetiyle derleme ardışık düzeninin oluşturulabilir, çalıştırılabilir yapılar üretmesini sağlayacaktır.