Što je novo u Angulu 10.1

Angular 10.1.0, naknadno izdanje za Angular 10, objavljeno je 2. rujna, donoseći poboljšanja performansi kompajleru i usmjerivaču, zajedno s novim alatom za izdvajanje poruka. 

Angular 10 postao je općenito dostupan kao produkcijsko izdanje 24. lipnja. Glavna nadogradnja Googleovog okvira temeljenog na TypeScriptu više je naglasila poboljšanja kvalitete, alata i ekosustava nego nove značajke.

Angular 10 je manji od prethodnih verzija Angulala. Nove mogućnosti uključuju novi birač raspona datuma u biblioteci komponenata korisničkog sučelja Angular Material i upozorenja za uvoz CommonJS. Upozorenja o uvozu CommonJS upozoravaju programere kada bi zavisnost upakirana u CommonJS mogla rezultirati većim, sporijim aplikacijama, omogućavajući programerima da zamijene paket ECMAScript modula.

Uz to, opcionalne strože postavke nude strože postavljanje projekta prilikom stvaranja novog radnog prostora ng newputem ng new --strict. Omogući ovu zastavicu, inicijalizira novi projekt s novim postavkama za poboljšanje održavanja, pomoć u hvatanju programskih pogrešaka i omogućavanje CLI-u da izvrši napredne optimizacije na aplikaciji.

Gdje preuzeti Angular 10

Opće izdanje Angular 10 možete pronaći na GitHubu. Da biste ažurirali svoju trenutnu instalaciju Angular, možete pokrenuti ovu naredbu:

ažuriranje @ angular / cli @ angular / core

Nove značajke u programu Angular 10.1.0

Izdanje Angular 10.1.0, dostupno na GitHubu, uključuje sljedeće nove mogućnosti i poboljšanja: 

  • Da bi poboljšao izvedbu u compiler-cliu, Angular 10.1 ima popravak za regresije izvedbe koje utječu na inkrementalnu ponovnu upotrebu programa.
  • Za izvedbu usmjerivača, prioritizedGuardValueoperater se primjenjuje za optimizaciju CanLoadzaštitnika.
  • ProgramBasedEntryPointFinderponovno će upotrijebiti EntryPointManifestza učitavanje ovisnosti o ulaznoj točki kada je to moguće, čime se izbjegava njihovo ponovno raščlanjivanje pri svakom pozivanju ngcc.
  • Podržan je novi alat za izdvajanje poruka, koji će na kraju biti integriran u CLI.
  • Za alat za izgradnju Bazel LinkabablePackageInfododaje se ng-modulepravilu, omogućavajući povezivaču da pravilno poveže ng_moduleciljeve u Node.js radnim akcijama.
  • Dijagnostici koja se proizvodi za pogreške u statičkoj procjeni dodaje se više uvida.
  • Dodana je opcija za apsolutnu URL HTTP podršku.
  • Kompajleru je dodana podrška za TypeScript 4.0.
  • canparse() dijagnostika je izložena.
  • Poboljšana je izvedba usmjerivača, obrazaca, CLI-ja prevoditelja i alata za kompatibilnost ngcc kompajlera.
  • Izmjena kukica životnog ciklusa može se obaviti bilo kada prije pokretanja.
  • Brojni su veliki popravci za jezgru, usmjerivač i ostale dijelove Angulala.

Nove značajke u programu Angular 10

Ključne značajke programa Angular 10 uključuju sljedeće:

  • TSlib, runtime knjižnica za TypeScript koja sadrži pomoćne funkcije, ažurirana je na TSlib 2.0. Alat za statičku analizu TSLint za TypeScript ažuriran je na TSLint 6.
  • Dodano je sučelje kompajlera koje obavija stvarni ngtsc kompajler. Prevoditelj specifičan za jezičnu uslugu upravlja s više datoteka za provjeru tipa pomoću sučelja projekta, stvarajući Scriptinfos po potrebi.
  • Konfiguracija preglednika za nove projekte ažurirana je tako da isključuje starije, manje korištene preglednike. Podrška je zastarjela za Internet Explorer 9, Internet Explorer 10 i Internet Explorer Mobile.
  • Angular Package Format više ne uključuje ESM5 ili FESM5 snopove, štedeći vrijeme preuzimanja i instalacije tijekom izvođenja yarnili npm installza Angular pakete i knjižnice.
  • Za kompajler su dodani rasponi imena za čitanje svojstava i pozive metoda.
  • EntryPointFinder, dodan je programski pretraživač ulaznih točaka, koji se može začeti iz uvoza u programu navedenom u datoteci tsjconfig.json. Očekuje se da će to biti brže nego DirectoryWalkerEntryPointFinderkada aktivni program uvozi samo mali dio instaliranih ulaznih točaka. 
  • Automatsko dovršavanje uklanja se iz HTML entiteta, na primjer &zbog sumnjive vrijednosti i problema s performansama.
  • Eksplicitno mapiranje izlaže se od zatvaranja u datoteke devmode. Ova je značajka usmjerena na razvojne alate koji moraju prevesti ulazne podatke o proizvodnji u njihove ekvivalente u načinu rada.
  • U prijelomnoj je promjeni generički lijek postao obvezan za ModuleWithProviders. Parametar generičkog tipa potreban je za ModuleWithProvidersuzorak za rad s Ivy kompilacijom i cjevovodom za prikazivanje, ali prije ovog urezivanja, View Engine je dopustio da se generički tip izostavi. Ako programer koristi ModuleWithProvidersbez generičkog tipa, migracija verzije 10 ažurirat će kôd. Ali ako programer koristi View Engine i ovisno o knjižnici koja izostavlja generički tip, pojavit će se pogreška gradnje. U ovom slučaju, ngcc neće pomoći, a migracija će obuhvaćati samo kod aplikacije. Treba kontaktirati autora knjižnice kako bi popravio svoju knjižnicu. Kao zaobilazno rješenje, skipLibChecks može se postaviti na false u tsconfig ili ažuriranju aplikacije da koristi samo Ivy.
  • Sad je sadržan TypeScript 3.9, a uklonjena je podrška za TypeScript 3.8. Ovo je prelomna promjena. TypeScript 3.6 i TypeScript 3.7 također više nisu podržani.
  • Poboljšanja izvedbe provjere tipa izvršena su na compiler-cli.
  • Da bi se poboljšale performanse, proračun basePathsje postao lijen, pa se radi samo ako je potrebno u TargetedEntryPointFinder. Prije basePaths se izračunavalo kad god je pronalazač pokrenut, što je bio gubitak truda u slučaju kada je ciljana ulazna točka već obrađena.
  • Podržano je spajanje više prijevodnih datoteka. Prije je bila dopuštena samo jedna prijevodna datoteka po lokalnom jeziku. Sada korisnici mogu odrediti više datoteka po lokalnom jeziku, a transakcije iz svake datoteke spojit će se ID-om poruka.
  • Mogu se konfigurirati vremenska ograničenja za zaključavanje async. To dodaje podršku za datoteku ngcc.config.js za postavljanje retryAttemptsi retryDelay mogućnosti za AsyncLocker. Integracijski test dodaje novu provjeru vremenskog ograničenja i koristi ngcc.config.js kako bi smanjio vremensko ograničenje kako bi spriječio predugo trajanje testa.
  • U ključnoj promjeni, upozorenja o nepoznatim elementima sada se bilježe kao pogreške. Iako ovo neće pokvariti aplikaciju, moglo bi pokrenuti alate koji očekuju da se ništa neće prijaviti putem console.error. 
  • U drugoj prijelomnoj promjeni, bilo koji rješivač koji se vrati EMPTYotkazat će navigaciju. Da bi omogućili nastavak navigacije, programeri moraju ažurirati rješavače kako bi ažurirali neku vrijednost, kao što je default!Empty.
  • Dodavanje podataka o ovisnosti i birača sadržaja ng u metapodatke. Ova predložena značajka kompajlera pružila bi dodatne metapodatke korisne za alate kao što je Angular Language Service, nudeći mogućnost davanja prijedloga za direktive / komponente definirane u knjižnicama.
  • Poboljšanja performansi, postignuta smanjenjem veličine manifesta ulazne točke i tehnikom predmemoriranja u manifestu. Osim toga, predmemoriranje ovisnosti vrši se u manifestu ulazne točke i čita odatle, umjesto da se izračuna svaki put. Ranije, čak i ako ulaznoj točki nije bila potrebna obrada, ngcc (kompajlator kompatibilnosti Angular Ivy) raščlanit će datoteke ulazne točke za izračunavanje ovisnosti, što bi modulima large_node trebalo puno vremena.
  • Da bi se poboljšala izvedba ngcc, sada je dopušteno trenutno izvještavanje o zastarjeloj datoteci brave. Uz to, sprema se i predmemorirana kopija raščlanjene datoteke tsconfig koja se može ponovno koristiti ako je put tsconfig isti.
  • U ključnoj promjeni, ažurirana je logika koja se odnosi na oblikovanje dnevnih razdoblja koja prelaze ponoć. Pri formatiranju vremena pomoću koda bili Bformatiranja, prikazani niz nije pravilno obrađivao dnevna razdoblja koja su obuhvaćala dane. Umjesto toga, logika se vraćala na zadani slučaj AM. Ova je logika ažurirana tako da se podudara s vremenima unutar dnevnog razdoblja koje se proteže nakon ponoći, tako da će sada pružiti točan izlaz, kao at nightu slučaju engleskog. Ova će promjena utjecati na programe koji koriste ili formatDate()ili DatePipeili i bBkodove formata.
  • Za usmjerivač, CanLoadčuvar se sada može vratiti Urltree. CanLoadStražar povratka Urltreeotkaže trenutni navigaciju i preusmjeravanja. To odgovara trenutnom ponašanju dostupnom CanActivatečuvarima koje je također dodano. To ne utječe na prethodno učitavanje. A CanLoadzaštitne blokira bilo predopterećenje; sve rute sa CanLoadstražom neće biti unaprijed učitane i straže neće biti izvršene kao dio predopterećenja.
  • Širenje ispravnog raspona vrijednosti u ExpressionBindingu izraza mikrosintakse na ParsedProperty, što bi zauzvrat proširilo raspon na AST predloške (i VE i Ivy). Ovaj je prijedlog također za sastavljača.
  • Kao popravak jezgre, logika će se dodati migraciji neukrašene klase za ukrašavanje izvedenih klasa neukrašenih klasa koje koriste Angular značajke.
  • U prijelomnoj promjeni, tip Urlmatchera odražavat će da uvijek može vratiti nulu.
  • Za uslužnog radnika uveden je popravak za situaciju u kojoj je postojala šansa da se uslužni radnik nikada neće registrirati kada postoji dugotrajan zadatak ili ponavljanje čekanja.
  • Izvršeni su brojni ispravci programskih pogrešaka, uključujući kompajler koji je izbjegavao nedefinirane izraze u šupljem nizu i jezgru koja je izbjegavala pogrešku migracije kada se uvozi nepostojeći simbol. U jezgri također postoji zaobilazno rješenje za ugrađenu programsku pogrešku Terser. Druga ispravka programske pogreške ispravno identificira module na koje utječu zamjene u TestBedu.
  • Angular NPM više ne sadrži određene komentare jsdoc-a koji podržavaju napredne optimizacije kompilatora zatvaranja. Ovo je prelomna promjena. Podrška za Closing Compiler u paketima eksperimentalna je i neispravna već neko vrijeme. Svatko tko koristi Closure Compiler vjerojatno će bolje konzumirati Angular pakete izrađene izravno, a ne verzije objavljene na NPM-u. Kao privremeno zaobilazno rješenje, korisnici mogu razmotriti upotrebu svog trenutnog cjevovoda za izgradnju s oznakom Closure --compilation_level=SIMPLE. Ova će zastava osigurati da cjevovod za izradu proizvodi artefakte koji se mogu izvoditi, a koji se mogu pokretati, po cijenu povećane veličine korisnog tereta zbog onemogućenih naprednih optimizacija.