最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

Angular5.0的特性介紹

來源:懂視網(wǎng) 責(zé)編:小OO 時(shí)間:2020-11-27 20:10:04
文檔

Angular5.0的特性介紹

以下簡(jiǎn)單介紹v5的重大變化。要了解詳情,請(qǐng)看changelog。構(gòu)建優(yōu)化器;5.0.0開始,通過CLI執(zhí)行的產(chǎn)品構(gòu)建默認(rèn)使用構(gòu)建優(yōu)化器。構(gòu)建優(yōu)化器是CLI中的一個(gè)工具,它基于我們對(duì)你Angular應(yīng)用的理解,可以把構(gòu)建后的包變得更小。構(gòu)建優(yōu)化器有兩個(gè)主要任務(wù)。首先,把你應(yīng)用的某些部分標(biāo)記為pure,以便原有工具利用它改進(jìn)“tree shaking”的優(yōu)化效果,同時(shí)刪除應(yīng)用中不必要的東西。其次,構(gòu)建優(yōu)化器會(huì)從你的應(yīng)用中刪除Angular裝飾器代碼。裝飾器只有編譯器會(huì)用,運(yùn)行時(shí)不用,可以刪掉。上述兩項(xiàng)優(yōu)化都可以減少生成JS包的大小,同時(shí)加快應(yīng)用啟動(dòng)速度。Angular Universal狀態(tài)轉(zhuǎn)交API及對(duì)DOM的支持。這樣更便于在服務(wù)端和客戶之間共享應(yīng)用狀態(tài)。
推薦度:
導(dǎo)讀以下簡(jiǎn)單介紹v5的重大變化。要了解詳情,請(qǐng)看changelog。構(gòu)建優(yōu)化器;5.0.0開始,通過CLI執(zhí)行的產(chǎn)品構(gòu)建默認(rèn)使用構(gòu)建優(yōu)化器。構(gòu)建優(yōu)化器是CLI中的一個(gè)工具,它基于我們對(duì)你Angular應(yīng)用的理解,可以把構(gòu)建后的包變得更小。構(gòu)建優(yōu)化器有兩個(gè)主要任務(wù)。首先,把你應(yīng)用的某些部分標(biāo)記為pure,以便原有工具利用它改進(jìn)“tree shaking”的優(yōu)化效果,同時(shí)刪除應(yīng)用中不必要的東西。其次,構(gòu)建優(yōu)化器會(huì)從你的應(yīng)用中刪除Angular裝飾器代碼。裝飾器只有編譯器會(huì)用,運(yùn)行時(shí)不用,可以刪掉。上述兩項(xiàng)優(yōu)化都可以減少生成JS包的大小,同時(shí)加快應(yīng)用啟動(dòng)速度。Angular Universal狀態(tài)轉(zhuǎn)交API及對(duì)DOM的支持。這樣更便于在服務(wù)端和客戶之間共享應(yīng)用狀態(tài)。
我們很高興地宣布Angular 5.0.0——五角形甜甜圈發(fā)布啦!這又是一個(gè)主版本,包含新功能并修復(fù)了很多bug。它再次體現(xiàn)了我們把Angular做得更小、更快、更好用的一貫?zāi)繕?biāo)。Angular 5.0 來了! 有這些重大變化,這篇文章就為大家介紹了Angular 5.0大變化,感興趣的小伙伴們可以參考一下,希望能幫助到大家。


以下簡(jiǎn)單介紹v5的重大變化。要了解詳情,請(qǐng)看changelog。

構(gòu)建優(yōu)化器

5.0.0開始,通過CLI執(zhí)行的產(chǎn)品構(gòu)建默認(rèn)使用構(gòu)建優(yōu)化器。

構(gòu)建優(yōu)化器是CLI中的一個(gè)工具,它基于我們對(duì)你Angular應(yīng)用的理解,可以把構(gòu)建后的包變得更小。

構(gòu)建優(yōu)化器有兩個(gè)主要任務(wù)。首先,把你應(yīng)用的某些部分標(biāo)記為pure,以便原有工具利用它改進(jìn)“tree shaking”的優(yōu)化效果,同時(shí)刪除應(yīng)用中不必要的東西。

其次,構(gòu)建優(yōu)化器會(huì)從你的應(yīng)用中刪除Angular裝飾器代碼。裝飾器只有編譯器會(huì)用,運(yùn)行時(shí)不用,可以刪掉。上述兩項(xiàng)優(yōu)化都可以減少生成JS包的大小,同時(shí)加快應(yīng)用啟動(dòng)速度。

Angular Universal狀態(tài)轉(zhuǎn)交API及對(duì)DOM的支持

這樣更便于在服務(wù)端和客戶之間共享應(yīng)用狀態(tài)。

Angular Universal是一個(gè)幫助開發(fā)者執(zhí)行服務(wù)端渲染(SSR)的項(xiàng)目。服務(wù)端渲染生成的HTML對(duì)不支持JS的蜘蛛和爬蟲友好,同時(shí)有助于提升用戶感知性能。

在5.0.0中,開發(fā)團(tuán)隊(duì)添加了ServerTransferStateModule及對(duì)應(yīng)的BrowserTransferStateModule。這個(gè)模塊可以幫開發(fā)者在服務(wù)端渲染生成的內(nèi)容中加入相關(guān)信息,然后傳送給客戶端,從而避免重復(fù)生成。這對(duì)于通過HTTP獲取數(shù)據(jù)的場(chǎng)景是很有用的。通過把狀態(tài)從服務(wù)器傳送到客戶端,開發(fā)者就不用再發(fā)第二次HTTP請(qǐng)求了。狀態(tài)轉(zhuǎn)交的相關(guān)文檔幾周后會(huì)發(fā)布。

Angular Universal團(tuán)隊(duì)還把平臺(tái)服務(wù)器Domino加到了平臺(tái)服務(wù)器中。Domino支持在服務(wù)器端環(huán)境下更多的開箱即用的DOM操作,可以改進(jìn)我們對(duì)非服務(wù)端第三方JS及組件庫(kù)的支持。

編譯器改進(jìn)

為支持遞增編譯,我們改進(jìn)了Angular編譯器。結(jié)果讓重新構(gòu)建加快,特別是對(duì)產(chǎn)品構(gòu)建和AOT構(gòu)建,效果更明顯。我們還增強(qiáng)了裝飾器,通過刪除空白達(dá)到減少包大小的目的。

TypeScript轉(zhuǎn)換

現(xiàn)在,Angular編譯器底層的工作機(jī)制是TypeScript轉(zhuǎn)換,從而讓遞增式重新構(gòu)建快了很多。TypeScript轉(zhuǎn)換是TypeScript 2.3新增的一個(gè)特性,可以讓我們深入到標(biāo)準(zhǔn)TypeScript編譯管道。

在打開AOT標(biāo)簽的情況下,運(yùn)行ng serve就可以利用上述機(jī)制。

ng serve --aot

建議大家都試一下。將來這個(gè)配置會(huì)成為CLI的默認(rèn)值。很多項(xiàng)目都有性能問題,涉及上千組件,我們希望各種規(guī)模的項(xiàng)目都能從這些改進(jìn)中受益。

在執(zhí)行https://angular.io 的遞增AOT構(gòu)建時(shí),新編譯器管道可節(jié)省95%的構(gòu)建時(shí)間(在我們開發(fā)機(jī)上測(cè)試的結(jié)果是從40多秒減少為不到2秒)。

我們的目標(biāo)是讓AOT編譯快到能開發(fā)者用它開發(fā)的程度?,F(xiàn)在,我們已經(jīng)沖進(jìn)了2秒以內(nèi),因此將來的CLI中可能會(huì)默認(rèn)開啟AOT。

作為向本次轉(zhuǎn)換過渡的一步,我們不再需要genDir,而outDir也變了:現(xiàn)在,我們會(huì)把為包生成的文件都打到node_modules里。

保留空白

過去編譯器會(huì)忠實(shí)地復(fù)現(xiàn)并在模板中包含制表符、換行符和空白?,F(xiàn)在你可選擇是否在組件和應(yīng)用中包含空白了。

可以在每個(gè)組件的裝飾器中指定這個(gè)配置,而當(dāng)前的默認(rèn)值為true。

或者也可以在tsconfig.json中進(jìn)行全局配置,其中該項(xiàng)默認(rèn)值也是true。

一般規(guī)則是組件級(jí)配置要覆蓋應(yīng)用級(jí)配置。開發(fā)團(tuán)隊(duì)打算將來把默認(rèn)值改成false,默認(rèn)為開發(fā)者節(jié)省空間。不要擔(dān)心你的<pre>標(biāo)簽,編譯器會(huì)智能處理它們。

改進(jìn)的裝飾器支持

現(xiàn)在支持Lambda和對(duì)象字面量useValue、useFactory和data裝飾器中的表達(dá)式降級(jí)(expression lowering)。這樣可以使用只能在運(yùn)行時(shí)計(jì)算的裝飾器中被降級(jí)(lower)的值。

因此現(xiàn)在可以不使用命名函數(shù),而改用Lambda函數(shù)。換句話說,執(zhí)行代碼不會(huì)影響你的d.ts或你的外部API。

我們還會(huì)將表達(dá)式降級(jí),作為useValue的一部分。

國(guó)際化的數(shù)值、日期和貨幣管道

我們寫了新的數(shù)值、日期和貨幣管道,讓跨瀏覽器國(guó)際化更方便,不需要再使用i18n的膩?zhàn)幽_本(polyfill)。

在以前版本的Angular中,我們一直依賴瀏覽器及其i18n API提供數(shù)值、日期和貨幣格式。為此,很多開發(fā)者都在使用膩?zhàn)幽_本(polyfill),而結(jié)果也不好。很多人反饋說一些常見的格式(如貨幣)不能做到開箱即用。

而在5.0.0中,我們把這個(gè)管道更新成了自己的實(shí)現(xiàn),依賴CLDR提供廣泛的地區(qū)支持,而且可配置。以下是我們對(duì)v4和v5所做的比較:a document comparing the pipe behavior between v4 and v5。

如果你還沒條件使用新管理,可以導(dǎo)入DeprecatedI18NPipesModule以降級(jí)到舊的行為。

StaticInjector代替ReflectiveInjector

為了消除對(duì)更多膩?zhàn)幽_本(polyfill)的依賴,我們用StaticInjector代替了ReflectiveInjector。前者不再需要Reflect,為開發(fā)者減少了應(yīng)用大小。

以前

ReflectiveInjector.resolveAndCreate(providers);

以后

Injector.create(providers);

提升Zone的速度

一方面提升了Zone的速度,另一方面也可以在特別關(guān)注性能的應(yīng)用中繞過它。

若要繞過它,啟動(dòng)應(yīng)用時(shí)加上noop:

platformBrowserDynamic().bootstrapModule(AppModule, {ngZone: 'noop'}).then( ref => {} );

這里有一個(gè)完整的例子:the example ng-component-state project。

exportAs

組件和指令中增加了對(duì)多名稱的支持。這有助于用戶實(shí)現(xiàn)無痛遷移。通過把指令導(dǎo)出為多個(gè)名稱,可以在不破壞原有代碼的情況下在Angular語(yǔ)法中使用新名稱。Angular Material項(xiàng)目已經(jīng)在其前綴遷移項(xiàng)目中用上了,對(duì)其他組件作者肯定也有用。

示例

HttpClient

v4.3在@angular/common中推出過HttpClient,用于在Angular中發(fā)送請(qǐng)求,它小巧易用。HttpClient受到了開發(fā)者的廣泛贊譽(yù),因此我們推薦在所有應(yīng)用中使用它,放棄之前的@angular/http library。

要升級(jí)HttpClient,需要在每個(gè)模塊的@angular/common/http中把HttpModule替換為HttpClientModule,注入HttpClient服務(wù),刪除所有map(res => res.json())。

CLI v1.5

從Angluar CLI v1.5開始,已經(jīng)開始支持Angluar v5.0.0,默認(rèn)生成v5項(xiàng)目。

在這次小版本升級(jí)中,我們默認(rèn)打開了構(gòu)建優(yōu)化器,讓開發(fā)者拿到更小的包。

我們還修改了使用.tsconfig文件的方式,以更嚴(yán)格地遵守TypeScript標(biāo)準(zhǔn)。此前,如果檢測(cè)到延遲加載的路由,而且你在tsconfig.json中手工指定了一組files或include,那這些路由會(huì)自動(dòng)化處理。而如今,根據(jù)TypeScript規(guī)范,我們不再這么干了。默認(rèn)情況下,CLI對(duì)TypeScript的配置中沒有files或include,因此多數(shù)開發(fā)者不會(huì)受影響。

Angular表單添加updateOn Blur/Submit

這樣可以根據(jù)blur或submit來運(yùn)行驗(yàn)證和更新值的邏輯了,不必再單純依賴input事件。

表單對(duì)應(yīng)用很重要,如果有服務(wù)端驗(yàn)證,或者驗(yàn)證或更新值會(huì)觸發(fā)較慢的操作,你當(dāng)然希望它少跑幾次?,F(xiàn)在你可以在控件層面控制驗(yàn)證和更新值的時(shí)機(jī)了,也可以在表單層面設(shè)置。

此外,你現(xiàn)在可以直接在選項(xiàng)中指定asyncValidators,而不是通過第三個(gè)參數(shù)指定。

模板驅(qū)動(dòng)的表單

以前

<input name="firstName" ngmodel=""/>

以后

或者

反應(yīng)式表單

以前

以后

RxJS 5.5

我們已經(jīng)把使用的RxJS更新到5.5.2或更高版本。這個(gè)新發(fā)布的RxJS可以讓開發(fā)完全擺脫之前導(dǎo)入機(jī)制的副作用,因?yàn)槲覀円孕碌膌ettable operators的方式使用了RxJS。這些新操作符消除了副作用,以及之前導(dǎo)入操作符中“patch”方法存在代碼切割和“tree shaking”等問題。

不再這樣:

現(xiàn)在這樣:

此外,RxJS現(xiàn)在發(fā)行了一個(gè)使用ECMAScript Modules的版本。新Angular CLI會(huì)默認(rèn)拉取這個(gè)新版本,讓包大小有明顯減小。如果你沒使用Angular CLI,那還是應(yīng)該指向這個(gè)新版本。相關(guān)文檔在此:Build and Treeshaking。

新的路由器生成周期事件

我們給路由器添加了新的生命周期事件,讓開發(fā)者可以跟蹤running guard啟動(dòng)到激活完成的各個(gè)階段。這些事件可在有子組件更新時(shí),在一個(gè)特定的路由器出口上展示加載動(dòng)畫,或者測(cè)量性能。

新的事件(按順序)是GuardsCheckStart、ChildActivationStart、ActivationStart、GuardsCheckEnd、ResolveStart、ResolveEnd、ActivationEnd、ChildActivationEnd。以下是一個(gè)使用這些事件啟動(dòng)和停止加載動(dòng)畫的示例:

如何更新

這里有Angular Update Guide,告訴你整個(gè)過程,以及更新前要做哪些事,還有更新應(yīng)用的步驟,以及做好迎接Angular未來版本的準(zhǔn)備等信息。

我們刪除很多以前廢棄的API(如OpaqueToken),也公布了一些新的廢棄項(xiàng)。以上指南會(huì)詳細(xì)介紹這些變更。

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Angular5.0的特性介紹

以下簡(jiǎn)單介紹v5的重大變化。要了解詳情,請(qǐng)看changelog。構(gòu)建優(yōu)化器;5.0.0開始,通過CLI執(zhí)行的產(chǎn)品構(gòu)建默認(rèn)使用構(gòu)建優(yōu)化器。構(gòu)建優(yōu)化器是CLI中的一個(gè)工具,它基于我們對(duì)你Angular應(yīng)用的理解,可以把構(gòu)建后的包變得更小。構(gòu)建優(yōu)化器有兩個(gè)主要任務(wù)。首先,把你應(yīng)用的某些部分標(biāo)記為pure,以便原有工具利用它改進(jìn)“tree shaking”的優(yōu)化效果,同時(shí)刪除應(yīng)用中不必要的東西。其次,構(gòu)建優(yōu)化器會(huì)從你的應(yīng)用中刪除Angular裝飾器代碼。裝飾器只有編譯器會(huì)用,運(yùn)行時(shí)不用,可以刪掉。上述兩項(xiàng)優(yōu)化都可以減少生成JS包的大小,同時(shí)加快應(yīng)用啟動(dòng)速度。Angular Universal狀態(tài)轉(zhuǎn)交API及對(duì)DOM的支持。這樣更便于在服務(wù)端和客戶之間共享應(yīng)用狀態(tài)。
推薦度:
標(biāo)簽: 介紹 的特點(diǎn) 特性
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top