Angular 7 發布 — CLI Prompts、虛擬滾動、拖放功能等

許聖泉 Michael Hsu
7 min readFeb 28, 2019

--

官方英語原文

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-promptSchematics集合添加密鑰來利用它們。

"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-selectmat-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的參考資料

我們更新了對主要第三方項目的依賴關係。

我們一直致力於一項名為Ivy的新計劃 — 我們的下一代渲染管道。Ivy目前正在積極開發中,不屬於Angular 7版本。我們開始驗證與現有應用程式的向後兼容性,並將在未來幾個月內準備好Ivy的選擇預覽。

--

--

許聖泉 Michael Hsu
許聖泉 Michael Hsu

No responses yet