Vad är nytt i Angular 10.1

Angular 10.1.0, en uppföljningspunktsversion till Angular 10, släpptes den 2 september, vilket ger prestandaförbättringar för kompilatorn och routern tillsammans med ett nytt verktyg för att extrahera meddelanden. 

Angular 10 blev allmänt tillgänglig som en produktionsrelease den 24 juni. Den stora uppgraderingen av det Google-utvecklade, TypeScript-baserade ramverket lägger större vikt vid förbättringar av kvalitet, verktyg och ekosystem än nya funktioner.

Angular 10 är mindre än tidigare versioner av Angular. Nya funktioner inkluderar en ny datumintervallväljare i Angular Material UI-komponentbiblioteket och varningar för CommonJS-import. CommonJS-varningar för importvarningar varnar utvecklare när ett beroende som är förpackat med CommonJS kan resultera i större, långsammare applikationer, vilket gör att utvecklare kan ersätta ett ECMAScript-modulpaket.

Dessutom erbjuder valfria strängare inställningar en striktare projektinställning när du skapar en ny arbetsyta med ng new, via ng new --strict. Aktivera den här flaggan initialiserar ett nytt projekt med nya inställningar för att förbättra underhåll, hjälpa till att fånga buggar och låta CLI göra avancerade optimeringar i en app.

Var kan man ladda ner Angular 10

Du hittar den allmänna versionen av Angular 10 på GitHub. För att uppdatera din nuvarande Angular-installation kan du köra det här kommandot:

ng uppdatering @ vinkel / cli @ vinkel / kärna

Nya funktioner i Angular 10.1.0

Angular 10.1.0-versionen, tillgänglig på GitHub, innehåller följande nya funktioner och förbättringar: 

  • För att förbättra prestandan i compiler-cli har Angular 10.1 en fix för prestationsregressioner som påverkar inkrementell återanvändning av program.
  • För routerprestanda används prioritizedGuardValueoperatören för att optimera CanLoadvakterna.
  • ProgramBasedEntryPointFinderkommer att återanvända för EntryPointManifestatt ladda ingångsberoenden när det är möjligt, vilket undviker att behöva analysera dem igen vid varje anrop av ngcc.
  • Ett nytt verktyg för extrahering av meddelanden stöds, som så småningom kommer att integreras i CLI.
  • För Bazel-byggverktyget LinkabablePackageInfoläggs till i ng-moduleregeln, så att länkaren kan länka ng_modulemål korrekt i Node.js runtime-åtgärder.
  • Mer insikt läggs till den diagnostik som produceras för statiska utvärderingsfel.
  • Ett alternativ har lagts till för absolut URL-HTTP-stöd.
  • TypeScript 4.0-stöd har lagts till i kompilatorn.
  • canparse() diagnostik exponeras.
  • Prestandaförbättringar har gjorts för routern, formuläret, kompilatorn CLI och kompatibilitetsverktyget ngcc.
  • Modifiering av livscykelkrokar kan göras när som helst innan bootstrap.
  • Ett antal stora korrigeringar erbjuds för kärnan, routern och andra delar av Angular.

Nya funktioner i Angular 10

Viktiga funktioner i Angular 10 inkluderar följande:

  • TSlib, runtime-biblioteket för TypeScript som innehåller hjälpfunktioner, har uppdaterats till TSlib 2.0. Det statiska analysverktyget TSLint för TypeScript har uppdaterats till TSLint 6.
  • Ett kompilatorgränssnitt har lagts till som omsluter den faktiska ngtsc-kompilatorn. Den språktjänstspecifika kompilatorn hanterar flera typkontrollfiler med hjälp av projektgränssnittet och skapar Scriptinfos vid behov.
  • Webbläsarkonfigurationen för nya projekt har uppdaterats för att utesluta äldre, mindre använda webbläsare. Stödet har upphört för Internet Explorer 9, Internet Explorer 10 och Internet Explorer Mobile.
  • Angular Package Format innehåller inte längre ESM5- eller FESM5-paket, vilket sparar nedladdnings- och installationstid när du kör yarneller npm installför Angular-paket och bibliotek.
  • För kompilatorn har namnområden lagts till för läsning av egendom och metodanrop.
  • EntryPointFinder, en programbaserad startpunktssökare, har lagts till som kan sås från importen i ett program som anges av en tsjconfig.json-fil. Detta förväntas bli snabbare än DirectoryWalkerEntryPointFindernär det aktiva programmet endast importerar en liten del av de installerade ingångspunkterna. 
  • Autoslutförande tas bort från HTML-enheter, till exempel på &grund av tvivelaktigt värde och ett prestandaproblem.
  • Explicit mappning exponeras från stängning till devmode-filer. Denna funktion riktar sig till utvecklingsverktyg som måste översätta produktionsbyggande insatser till sina devmode-ekvivalenter.
  • I en brytande förändring har generiskt gjorts obligatoriskt för ModuleWithProviders. En parameter för generisk typ har krävts för att ModuleWithProvidersmönstret ska fungera med Ivy-kompilerings- och renderingspipelinen, men innan detta åtagande tillät View Engine att generisk typ utelades. Om en utvecklare använder ModuleWithProvidersutan en generisk typ kommer en version 10-migrering att uppdatera koden. Men om en utvecklare använder View Engine och beroende på ett bibliotek som utelämnar den generiska typen kommer ett byggfel att utfärdas. I det här fallet hjälper ngcc inte och migreringen täcker bara applikationskod. Biblioteksförfattaren ska kontaktas för att fixa sitt bibliotek. Som en lösning kunde skipLibChecks ställas in på falskt i tsconfig eller uppdatera en app för att endast använda Ivy.
  • TypeScript 3.9 finns nu med stöd för TypeScript 3.8 har tagits bort. Detta är en brytande förändring. TypeScript 3.6 och TypeScript 3.7 stöds inte heller längre.
  • Förstärkare av typkontroll har gjorts i compiler-cli.
  • För att förbättra prestanda har beräkningen basePathsgjorts lat, så arbetet görs bara om det behövs i TargetedEntryPointFinder. Tidigare basePaths beräknades när sökaren blev instanserad, vilket var slöseri med ansträngning i fallet då den riktade ingångspunkten redan hade behandlats.
  • Sammanfogning av flera översättningsfiler stöds. Tidigare var endast en översättningsfil per språk tillåten. Nu kan användare ange flera filer per land, och transaktionerna från varje fil kommer att slås samman med meddelande-ID.
  • Async-låsningstidsgränser kan konfigureras. Detta lägger till stöd för filen ngcc.config.js för att ställa in retryAttemptsoch retryDelay alternativen för AsyncLocker. Ett integrationstest lägger till en ny kontroll för en timeout och använder ngcc.config.js för att minska timeout-tiden för att förhindra att testet tar för lång tid.
  • I en avgörande förändring loggas varningar om okända element nu som fel. Även om detta inte kommer att bryta en app, kan det lösa upp verktyg som förväntar sig att inget loggas via console.error. 
  • I en annan avgörande förändring EMPTYavbryter navigering varje resolver som returnerar . För att navigationen ska kunna fortsätta måste utvecklare uppdatera resolverna för att uppdatera något värde, till exempel default!Empty.
  • Tillägget av beroendeinformation och ng-innehållsväljare till metadata. Den här föreslagna kompilatorfunktionen skulle ge ytterligare metadata som är användbara för verktyg som Angular Language Service, vilket ger möjlighet att ge förslag på direktiv / komponenter definierade i bibliotek.
  • Prestandaförbättringar, uppnådda genom att minska storleken på ingångspunktmanifestet och en cacheteknik i manifestet. Dessutom görs cachning av beroenden i ingångspunktmanifestet och läses därifrån snarare än att beräknas varje gång. Tidigare, även om en ingångspost inte behövde bearbetas, skulle ngcc (Angular Ivy-kompatibilitetskompilator) analysera filerna i ingångspunkten för att beräkna beroenden, vilket skulle ta mycket tid för stora_nodmoduler.
  • För att förbättra ngcc-prestanda är nu omedelbar rapportering av en inaktuell låsfil tillåten. Dessutom lagras en cachad kopia av en analyserad tsconfig-fil som kan återanvändas om tsconfig-sökvägen är densamma.
  • I en brytande förändring har logiken uppdaterats avseende formatering av dagperioder som passerar midnatt. När du formaterade en tid med beller Bformaterar koden hanterade inte den renderade strängen ordentligt dagperioder som sträckte sig över dagar. Istället föll logiken tillbaka till standardfallet för AM. Denna logik har uppdaterats så att den matchar tider inom en dag som sträcker sig efter midnatt, så den kommer nu att ge korrekt utdata, som at nighti fallet med engelska. Program som använder antingen formatDate()eller DatePipeeller boch  Bformatkoder kommer att påverkas av denna förändring.
  • För routern kan CanLoadvakt nu återvända Urltree. En CanLoadvakt som återvänder Urltreeannullerar aktuell navigering och omdirigeringar. Detta matchar det aktuella beteendet som är tillgängligt för CanActivatevakter som också har lagts till. Detta påverkar inte förladdningen. Ett CanLoadskydd skyddar mot förspänning. alla rutter med en CanLoadvakt kommer inte att förspela in och vakterna kommer inte att utföras som en del av förladdningen.
  • Förökning av det korrekta värdet i ett uttryck Bindning av ett mikrosyntaxuttryck till ParsedProperty, vilket i sin tur skulle sprida räckvidden till AST-mallarna (både VE och Ivy). Detta förslag är också för kompilatorn.
  • I en fix till kärnan skulle logik läggas till migrering av odekorerad klass för att dekorera härledda klasser av odekorerade klasser som använder vinkelfunktioner.
  • I en brytande förändring kommer Urlmatchers typ att återspegla att den alltid kan returnera null.
  • För servicearbetaren har en korrigering införts för en situation där det finns en chans att servicearbetaren aldrig registrerar sig när det finns en långvarig uppgift eller återkommande timeout.
  • Ett antal buggfixar har gjorts inklusive kompilatorn som undviker odefinierade uttryck i en hålmatris och kärnan undviker ett migreringsfel när en obefintlig symbol importeras. Det finns också en lösning i kärnan för Terser inlining bug. En annan buggfix identifierar korrekt moduler som påverkas av åsidosättningar i TestBed.
  • Angular NPM innehåller inte längre vissa jsdoc-kommentarer för att stödja stängningskompilatorns avancerade optimeringar. Detta är en brytande förändring. Stöd för stängningskompilator i paket har varit experimentellt och brutet under en tid. Den som använder Closure Compiler är sannolikt bättre att konsumera Angular-paket byggda från källor direkt än att konsumera versioner som publiceras på NPM. Som en tillfällig lösning kan användare överväga att använda sin nuvarande byggpipeline med stängningsflagga --compilation_level=SIMPLE. Den här flaggan säkerställer att byggledningen producerar byggbara, körbara artefakter till en kostnad av ökad nyttolaststorlek på grund av att avancerade optimeringar inaktiveras.