Angular 7 發布 — CLI Prompts、虛擬滾動、拖放功能等
Angular最新7.0.0版本已經發布!這是跨平台的主要版本,包括核心框架,Angular Material和CLI。此次發布除了包含Angular主要功能以外,同時還有幾個相依的工具也一併更新。
虛擬滾動可以提高性能(圖片來至官方部落格)
如何更新到Angular 7
你可以到update.angular.io以獲取有關更新的詳細信息和指導,如果你目前是使用Angular 6來開發,那只需要一個指令便能更新到Angular 7:
ng update @ angular / cli @ angular / core
根據早期使用者報告,此次更新速度比以往都快,更新時間不到10分鐘。
CLI Prompts
現在,CLI將在運行常用命令時提示用戶,ng new
或者ng add @angular/material
幫助您發現路由或SCSS支持等內置功能。
CLI Prompts已添加到Schematics中,因此任何包發布Schematics都可以通過向x-prompt
Schematics集合添加密鑰來利用它們。
"routing": {
"type": "boolean",
"description": "Generates a routing module.",
"default": false,
"x-prompt": "Would you like to add Angular routing?"
},
性能
我們持續關注效能的問題,分析了整個開發生態系統中的常見錯誤。我們發現許多開發人員將reflect-metadata
包含在production中,但其實它只在development中需要的。
要解決此問題,Angular 7的部分更新將自動從polyfills.ts
文件中刪除它,然後在JIT模式下構建應用程式時將其作為構建步驟包含在內,默認情況下從生成版本中刪除此polyfill。
使用Angular 7,我們還默認新項目以利用CLI中的Bundle Budgets。當initial bundle超過2MB並且error為5MB時,新應用程式將發出警告。這些Bundle Budgets可以在angular.json.
改變
"budgets": [{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
}]
Bundle Budgets與警告一致,可以向使用者展示利用Chrome的數據保護功能。
Chrome數據保護程序(圖片來至官方部落格)
角度材料和CDK
Material Design 在2018年收到了重大更新 ,Angular Material用戶更新到Angular 7應該會產生微小的視覺差異,反映出Material Design規範的更新。
Material Design Refresh包含開發人員應該注意的小改動(圖片來至官方部落格)
新添加到CDK,現在可以通過導入DragDropModule
或刪除虛擬滾動和拖放ScrollingModule
。
虛擬滾動
虛擬滾動基於列表的可見部分從DOM加載和卸載元素,從而可以為具有非常大的可滾動列表的使用者提供更快速的體驗。
<cdk-virtual-scroll-viewport itemSize="50" class="example-viewport">
<div *cdkVirtualFor="let item of items" class="example-item">{{item}}</div>
</cdk-virtual-scroll-viewport>
拖放
在範例儀表板上拖放(圖片來至官方部落格)
拖放功能現在已經在CDK中,並包括自動呈現,因為使用者移動項目和幫助程式方法以重新排序列表(moveItemInArray
)和在列表(transferArrayItem
)之間傳輸項目。
<div cdkDropList class="list" (cdkDropListDropped)="drop($event)">
<div class="box" *ngFor="let movie of movies" cdkDrag>{{movie}}</div>
</div>drop(event: CdkDragDrop<string[]>) { moveItemInArray(this.movies, event.previousIndex, event.currentIndex); }
改進了選擇的可訪問性
通過使用select
內部的本機元素來提高應用程式的可訪問性mat-form-field
。本機選擇具有一些性能,可訪問性和可用性優勢,但我們保留mat-select
了可以完全控制選項的顯示。
了解更多關於mat-select
和mat-form-field
Angular元素
Angular Elements現在支持使用自定義元素的Web標准進行內容投影。
<my-custom-element>This content can be projected!</my-custom-element>
Angular在社群中取得了巨大的成功,為此我們一直致力於與最近推出的幾個社群項目合作。
StackBlitz 2.0支持多窗格編輯和Angular語言服務(圖片來至官方部落格)
- Angular Console — 一個可下載的控制台,用於在本地計算機上啟動和運行Angular項目
- @ angular / fire — AngularFire在npm上有一個新家,並為Angular提供了第一個穩定的版本
- NativeScript — 現在可以使用NativeScript為Web和已安裝的移動設備構建單個項目
- StackBlitz — StackBlitz 2.0已經發布,現在包括 Angular語言服務,以及更多功能,如選項卡式編輯
我們一直在努力改進我們的指南和參考資料。angular.io上的文檔現在包含Angular CLI的參考資料。
我們更新了對主要第三方項目的依賴關係。
- TypeScript 3.1
- RxJS 6.3
- Node 10 — 我們已經添加了對Node 10的支持,我們仍然支持8
我們一直致力於一項名為Ivy的新計劃 — 我們的下一代渲染管道。Ivy目前正在積極開發中,不屬於Angular 7版本。我們開始驗證與現有應用程式的向後兼容性,並將在未來幾個月內準備好Ivy的選擇預覽。