Programování

Co je nového v Angular 10.1

Angular 10.1.0, pokračování vydání Angular 10, bylo vydáno 2. září a přineslo vylepšení výkonu kompilátoru a routeru spolu s novým nástrojem pro extrakci zpráv.

Angular 10 se stal obecně dostupným v produkčním vydání 24. června. Hlavní upgrade rámce vyvinutého společností Google založeného na stroji TypeScript klade větší důraz na zlepšení kvality, nástrojů a ekosystémů než na nové funkce.

Angular 10 je menší než předchozí verze Angular. Mezi nové funkce patří nový výběr období v knihovně komponent Angular Material UI a varování pro importy CommonJS. Upozornění na import CommonJS upozorní vývojáře, když závislost zabalená s CommonJS může mít za následek větší a pomalejší aplikace, což vývojářům umožní nahradit balíček modulu ECMAScript.

Navíc volitelná přísnější nastavení nabízejí přísnější nastavení projektu při vytváření nového pracovního prostoru pomocí nové, přes nové - přísné. Povolit tento příznak inicializuje nový projekt s novým nastavením, aby se zlepšila udržovatelnost, pomohlo zachytit chyby a umožnilo rozhraní příkazového řádku provádět pokročilé optimalizace v aplikaci.

Kde stáhnout Angular 10

Obecné vydání Angular 10 najdete na GitHubu. Chcete-li aktualizovat aktuální instalaci Angular, můžete spustit tento příkaz:

ng update @ angular / cli @ angular / core

Nové funkce v Angular 10.1.0

Verze Angular 10.1.0, která je k dispozici na GitHubu, obsahuje následující nové funkce a vylepšení:

  • Aby se zlepšil výkon v klieru kompilátoru, má Angular 10.1 opravu pro regrese výkonu ovlivňující postupné opětovné použití programu.
  • Pro výkon routeru je prioritizedGuardValue operátor se používá k optimalizaci CanLoad stráže.
  • ProgramBasedEntryPointFinder bude znovu použit EntryPointManifest načíst závislosti vstupního bodu, pokud je to možné, což zabrání nutnosti znovu je analyzovat při každém vyvolání ngcc.
  • Je podporován nový nástroj pro extrakci zpráv, který bude nakonec integrován do CLI.
  • U nástroje Bazel build, LinkabablePackageInfo se přidává do ng-modul pravidlo umožňující linkeru řádné propojení ng_module cíle v běhových akcích Node.js.
  • K diagnostice vytvořené pro chyby statického vyhodnocení se přidá další přehled.
  • Byla přidána možnost pro absolutní podporu HTTP HTTP.
  • Do kompilátoru byla přidána podpora TypeScript 4.0.
  • canparse () diagnostika je vystavena.
  • Došlo ke zlepšení výkonu routeru, formulářů, rozhraní příkazového řádku kompilátoru a nástroje pro kompatibilitu kompilátoru ngcc.
  • Úpravy háčků životního cyklu lze provést kdykoli před bootstrapem.
  • Pro jádro, router a další části Angular je nabízena řada velkých oprav.

Nové funkce v Angular 10

Mezi klíčové vlastnosti Angular 10 patří:

  • TSlib, běhová knihovna pro TypeScript obsahující pomocné funkce, byla aktualizována na TSlib 2.0. Nástroj pro statickou analýzu TSLint pro TypeScript byl aktualizován na TSLint 6.
  • Bylo přidáno rozhraní kompilátoru, které zabalí skutečný kompilátor ngtsc. Kompilátor specifický pro jazykovou službu spravuje více souborů typůeck pomocí rozhraní projektu a podle potřeby vytváří Scriptinfos.
  • Konfigurace prohlížeče pro nové projekty byla aktualizována, aby vyloučila starší, méně používané prohlížeče. Podpora pro Internet Explorer 9, Internet Explorer 10 a Internet Explorer Mobile je zastaralá.
  • Angular Package Format již neobsahuje svazky ESM5 nebo FESM5, což šetří čas stahování a instalace při spuštění příze nebo NPM instalace pro úhlové balíčky a knihovny.
  • Pro kompilátor byly přidány rozsahy jmen pro čtení vlastností a volání metod.
  • EntryPointFinder, byl přidán vyhledávač vstupních bodů založený na programu, který lze naočkovat z importů v programu určeném souborem tsjconfig.json. Očekává se, že to bude rychlejší než DirectoryWalkerEntryPointFinder když aktivní program importuje pouze malou část nainstalovaných vstupních bodů.
  • Automatické doplňování se odebírá z entit HTML, například & ampkvůli pochybné hodnotě a problému s výkonem.
  • Explicitní mapování je vystaveno od uzavření do devmode souborů. Tato funkce je zaměřena na vývojové nástroje, které musí převádět vstupy výroby do jejich ekvivalentů devmode.
  • V zásadní změně se stalo obecné povinné ModuleWithProviders. Pro parametr byl vyžadován parametr obecného typu ModuleWithProviders pattern to work with the Ivy compilation and rendering pipeline, but before this commit, View Engine allow the generic type to be omitted. Pokud vývojář používá ModuleWithProviders bez obecného typu bude migrací verze 10 aktualizován kód. Ale pokud vývojář používá View Engine a v závislosti na knihovně, která vynechá obecný typ, bude vydána chyba sestavení. V tomto případě ngcc nepomůže a migrace se bude týkat pouze kódu aplikace. Autor knihovny by měl být kontaktován za účelem opravy své knihovny. Jako řešení by skipLibChecks mohl být nastaven na hodnotu false v tsconfig nebo aktualizaci aplikace, aby používal pouze Ivy.
  • Nyní je k dispozici TypeScript 3.9, s odstraněním podpory TypeScript 3.8. Toto je zásadní změna. TypeScript 3.6 a TypeScript 3.7 také již nejsou podporovány.
  • V kompilátoru-cli byla provedena vylepšení výkonu kontroly typu.
  • Chcete-li zlepšit výkon, výpočet basePaths byl líný, takže práce se provádí pouze v případě potřeby v TargetedEntryPointFinder. Dříve, basePaths byl vypočítán vždy, když byl vytvořen instanci vyhledávače, což byla ztráta úsilí v případě, že cílový vstupní bod již byl zpracován.
  • Sloučení více překladových souborů je podporováno. Dříve byl povolen pouze jeden překladový soubor na národní prostředí. Nyní mohou uživatelé zadat více souborů na národní prostředí a transakce z každého souboru budou sloučeny pomocí ID zasílání zpráv.
  • Lze nakonfigurovat asynchronní časové limity uzamčení. To přidává podporu pro soubor ngcc.config.js pro nastavení retryAttempts a retryDelay možnosti pro AsyncLocker. Test integrace přidává novou kontrolu časového limitu a používá ngcc.config.js ke zkrácení časového limitu, aby se zabránilo příliš dlouhému testu.
  • Při zásadní změně se varování o neznámých prvcích nyní zaznamenávají jako chyby. I když to aplikaci nerozbije, mohlo by dojít ke spuštění nástrojů, které neočekávají, že by se pomocí konzoly.error nic protokolovalo.
  • V další zlomové změně jakýkoli resolver, který se vrátí PRÁZDNÝ zruší navigaci. Aby mohla navigace pokračovat, vývojáři musí aktualizovat překladače, aby aktualizovali nějakou hodnotu, například výchozí! prázdné.
  • Přidání informací o závislostech a selektorů obsahu ng do metadat. Tato navrhovaná funkce kompilátoru by poskytla další metadata užitečná pro nástroje, jako je Angular Language Service, nabízející možnost poskytovat návrhy směrnic / komponent definovaných v knihovnách.
  • Vylepšení výkonu dosažené snížením velikosti manifestu vstupního bodu a techniky ukládání do mezipaměti v manifestu. Kromě toho se ukládání závislostí do mezipaměti provádí v manifestu vstupního bodu a čte se odtud, místo aby se pokaždé počítalo. Dříve, i když vstupní bod nepotřeboval zpracování, ngcc (překladač kompatibility Angular Ivy) by analyzoval soubory vstupního bodu pro výpočet závislostí, což by modulům large_node trvalo hodně času.
  • Aby se zlepšil výkon ngcc, je nyní povoleno okamžité hlášení o zastaralém souboru zámku. Kromě toho je uložena kopie uloženého souboru tsconfig v mezipaměti, kterou lze znovu použít, pokud je cesta tsconfig stejná.
  • V zásadní změně byla aktualizována logika týkající se formátování denních období, která překračují půlnoc. Při formátování času pomocí b nebo B formátovaný kód, vykreslený řetězec nesprávně zpracovával denní období, která trvala několik dní. Místo toho logika klesala zpět na výchozí případ DOPOLEDNE. Tato logika byla aktualizována, takže odpovídá časům v rámci denního období, které přesahuje půlnoc, takže nyní vykreslí správný výstup, například v noci v případě angličtiny. Aplikace využívající buď formatDate () nebo DatePipe nebo b aB formátovací kódy budou touto změnou ovlivněny.
  • U routeru je CanLoad stráž se nyní může vrátit Urltree. A CanLoad strážný se vrací Urltree zruší aktuální navigaci a přesměrování. To odpovídá aktuálnímu chování, které je k dispozici CanActivate přidány stráže. To nemá vliv na předběžné načítání. A CanLoad kryt blokuje jakékoli předpětí; jakékoli trasy s a CanLoad stráž nebude předem načtena a stráže nebudou provedeny v rámci předpětí.
  • Šíření správného rozsahu hodnot v ExpressionBinding výrazu microsyntax na ParsedProperty, což by zase šířilo rozpětí na šablonu AST (VE i Ivy). Tento návrh je také pro kompilátor.
  • V opravě jádra by se logika přidala k migraci nedekorované třídy, aby se ozdobily odvozené třídy nedekorovaných tříd, které používají úhlové funkce.
  • Při zásadní změně bude Urlmatcherův typ odrážet, že by vždy mohl vrátit hodnotu null.
  • U servisního pracovníka byla zavedena oprava pro situaci, ve které byla šance, že se servisní pracovník nikdy nezaregistruje, pokud existuje dlouhotrvající úkol nebo opakovaný časový limit.
  • Bylo provedeno několik oprav chyb, včetně kompilátoru vyhýbajícího se nedefinovaným výrazům v děravém poli a jádra zabraňujícího chybě migrace při importu neexistujícího symbolu. V jádru je také řešení pro inlining bug Terser. Další oprava chyby správně identifikuje moduly ovlivněné přepsáním v TestBed.
  • Úhlové NPM již neobsahuje určité komentáře jsdoc na podporu pokročilých optimalizací Closure Compiler. Toto je zásadní změna. Podpora kompilátoru uzavření v balíčcích byla po nějakou dobu experimentální a přerušená. Kdokoli, kdo používá Closure Compiler, bude pravděpodobně lépe konzumovat Angular balíčky vytvořené přímo ze zdrojů, než konzumovat verze publikované na NPM. Jako dočasné řešení mohou uživatelé zvážit použití svého aktuálního kanálu sestavení s příznakem Uzavření --compilation_level = JEDNODUCHÉ. Tento příznak zajistí, že kanál sestavení vytvoří sestavitelné, spustitelné artefakty za cenu zvýšené velikosti užitečného zatížení kvůli deaktivaci pokročilých optimalizací.