您好,登錄后才能下訂單哦!
文章來自官網部分翻譯
https://blog.angular.io/version-5-0-0-of-angular-now-available-37e414935ced
Angular5.0.0版本已經正式發布
總結一下v5.0.0帶來的新變化都有哪些。
1.構建優化
5.0版本默認采用CLI構建和打包。構建優化器是包含在CLI里面的一個工具,通過對你的應用程序更加語義化的理解可以使得你的打包程序(bundle)更小。
構建優化器有兩個主要工作。
第一,我們可以將應用程序的一部分標記為純應用(pure),改進了現有工具提供的搖樹優化,刪除了應用中其它不需要的部分。
第二,從你的應用程序在運行時刪除裝飾符代碼(decorators),裝飾(decorators)是由編譯器使用的,而在運行時并不需要可以被刪除。這些工作減少了生成的JavaScript bundles的大小,并增加了你的用戶應用程序的啟動速度。
2.服務端狀態轉換和DOM支持
有了這個支持,可以讓應用程序在服務器端和客戶端版之間共享狀態更容易。
Angular Universal是一個幫助開發者實現SSR的開源項目,通過在服務端渲染
Angular應用程序,然后在客戶端引導啟動程序并生成HTML,由此更好的支持那些對javascript不太友好的化境來提高應用程序性能。
5.0版本中,Angular開發團隊添加了ServerTransferStateModule(與之對應的BrowserTransferStateModule),這個模塊允許你在服務端生成模塊信息并傳輸到客戶端,不需要在客戶端重復創建。這一點在通過HTTP獲取數據并展示時非常有用。通過服務端狀態轉移,客戶端不需要在發送第二個HTTP數據請求,狀態轉移的API文檔將在未來幾周內發布。
此處另一個改變是AngularUniversal團隊添加了Domino渲染工具,Domino的加入意味著我們在服務器端上下文中將可以支持更多的DOM操作,改進了對第三方JS和組件庫的支持。
3.編譯器改進
改進了Angular編譯器來支持增量編譯,重新構建變得更快,特別是對生產環境的構建和AOT編譯,增強的裝飾器可以通過更精細化的去除空格來減小產生的包.
改進后的AOT編譯的性能大幅度,提升可以節省約95%的構建時間,40s可以提升至2s完成一次構建。
Preserve Whitespace
通過編譯器,模板開發中的制表符、換行符、空格等可以原樣的保留下來,并提供選項可以自選是否使用Preserve Whitespace來保留這些東西。
也可以在tsconfig.json設置作用到全局
注:組件級別的選項會覆蓋應用程序級別的設置。
增強的裝飾符支持
裝飾符降低了在使用useValue、useFactory、data對lambda表達式的要求,開發者也可以使用一個lamdba表示來代替一個已定義的命名函數,也就意味著你可以不事先在*.d.ts中聲明而直接執行代碼。
去掉表達式方式
4.國際化號碼、日期和貨幣管道
Angular5中已經建立了新的號碼,日期和貨幣管道,增加了跨瀏覽器的標準化實現,消除國際化在不同環境中的差異。
在5.0中管道可以使用我們自己的實現,可以在任何地方實現本地化的支持和配置。
V4 V5之間管道差異對比
https://docs.google.com/spreadsheets/d/12iygt-_cakNP1VO7MV9g4lq9NsxVWG4tSfc98HpHb0k/edit#gid=0
5.StaticInjector取代ReflectiveInjector依賴注入器
為了更多的減少polyfills,5.0中使用了StaticInjector注入器來替換原有的ReflectiveInjector注入器,這種注入器不再里來與ReflectPolyfill,可以大幅減少應用程序體積
在4.x中,依賴注入器一共有兩種,即Injector的抽象類子類:
1._NullInjector (該類的實例用于表示空的注入器)
2.ReflectiveInjector (表示一個依賴注入容器,用于實例化對象和解析依賴)
之前提供依賴注入方式:ReflectiveInjector.resolveAndCreate(providers);5.0中方式:Injector.create(providers);
6.Zone執行速度的提升
5.0中默認提供的zones已經優化過,速度大幅提升,并且在應用程序中繞過zonee區域更加關于應用程序的性能。
繞過zone引導啟動應用程序的方式:
platformBrowserDynamic().bootstrapModule(AppModule,{ngZone:'noop'}).then( ref => {} );
7.exportAs多命名支持
5.0中提供了組件/指令的多命名支持,在對用戶不修改代碼情況下進行組件的遷移操作等非常有用,將一個組件導出多個名字,可以讓組件已一個新名字來使用而達到不破壞現有代碼的目的。
8.HttpClient
在4.3中HttpClient模塊被封裝在@angular/common中,新的HttpClient被封裝在@angular/common/http中,更新Http模塊后,需要使用HttpClientModule替換原有HttpModule,并在使用http服務時,可以去掉map(res=>res.json())的調用,新模塊中已經不再需要這么寫了。
9.CLI v1.5
Angular CLI v1.5版本中已經添加了對5.0版本的支持,后期將會把v5.0.0作為CLI的默認版本。這個版本中已經默認開啟了構建優化,所以開發者可以直接感受到更小的js打包優化帶來的收益。同時也更新了.tsconfig將更嚴格的遵循TypeScript標準,
10.Angular Forms adds updateOn Blur / Submit
可以使用blur/submit來進行事件更新,而不用每個input都寫一個事件了。
Template Driven Forms Before <input name="firstName" ngModel> After <input name="firstName" ngModel [ngModelOptions]="{updateOn: 'blur'}"> or <form [ngFormOptions]="{updateOn: 'submit'}"> Reactive Forms Before new FormGroup(value); new FormControl(value, [], [myValidator]) After new FormGroup(value, {updateOn: 'blur'})); new FormControl(value, {updateOn: 'blur', asyncValidators: [myValidator]}) asyncValidators可以不再是作為一個參數傳遞 而是直接作用到表單上了。
11.RxJS 5.5
支持V5.2+ 5.5在bundle上更加優化了
12.New Router Lifecycle Events
GuardsCheckStart
ChildActivationStart
ActivationStart
GuardsCheckEnd
ResolveStart
ResolveEnd
ActivationEnd
ChildActivationEnd
總結
以上所述是小編給大家介紹的Angular5.0.0新特性,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。