Angular 7.0發佈,帶來CLI Prompts、虛擬滾動和拖放等特性

Angular 7.0發佈,帶來CLI Prompts、虛擬滾動和拖放等特性

今天,Angular 7.0 版本正式發佈!這是一個跨整個平臺的主要版本,包括核心框架、Angular Material 和與主要版本同步的 CLI。這個版本包含了與工具鏈相關的新特性,並啟動了幾個主要合作伙伴。


Angular 7.0發佈,帶來CLI Prompts、虛擬滾動和拖放等特性


如何更新到 v7?

你現在可以訪問 update.angular.io 以便獲取有關更新應用程序的詳細信息和指導。由於 Angular 團隊在 v6 中做了很多工作,所以對於大多數開發人員來說,更新到 v7 應該只需要一個命令:

ng update @angular/cli @angular/core

v7 的早期採用者表示,這個版本的更新速度比以往任何時候都要快,很多應用程序不到 10 分鐘就能完成更新。

CLI Prompts

現在,CLI 在運行 ng new 或 ng add @angular/material 之類的常用命令時會提示用戶,幫助用戶發現路由或 SCSS 支持等內置特性。

CLI Prompts 已經被添加到 Schematics 中,因此,任何基於 Schematics 的發佈包都可以通過向 Schematics 集合中添加 x-prompt 鍵來使用它們。

"routing": {
"type": "boolean",
"description": "Generates a routing module.",
"default": false,
"x-prompt": "Would you like to add Angular routing?"
},

應用程序性能

Angular 團隊分析了整個生態系統中的常見錯誤。他們發現,很多開發人員在生產環境中包含了 reflect-metadata polyfill,而這個 polyfill 實際上只在開發中用得上。

為了解決這個問題,v7 的部分更新將自動從 polyfills.ts 文件中將其移除,然後在 JIT 模式下構建應用程序時將其作為構建步驟包含在內,默認情況下從生產版本中移除此 polyfill。

在 v7 中,他們還讓新項目默認使用捆綁包預算。當初始捆綁包超過 2MB 會給出警告,並在達到 5MB 時拋出錯誤。預算可以在 angular.json 文件中修改。

"budgets": [{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
}]

這些預算與警告利用了 Chrome 的 Data Saver 特性。

Angular 7.0發佈,帶來CLI Prompts、虛擬滾動和拖放等特性


Angular Material 和 CDK

Material Design 在 2018 年帶來了一個重大的更新。更新到 v7 的 Angular Material 用戶應該會發現微小的視覺差異,可以反映出 Material Design 規範的更新。

Angular 7.0發佈,帶來CLI Prompts、虛擬滾動和拖放等特性


你現在可以通過導入 DragDropModule 或 ScrollingModule 來使用虛擬滾動和拖放,它們是 CDK 新增的特性。

虛擬滾動

虛擬滾動基於列表的可見部分向 DOM 加載或從中卸載元素,從而可以為非常大的可滾動列表構建非常快的用戶體驗。


{{item}}


有關虛擬滾動更多的信息請閱讀:

https://material.angular.io/cdk/scrolling/overview

拖放功能


Angular 7.0發佈,帶來CLI Prompts、虛擬滾動和拖放等特性


CDK 現在提供了拖放支持,還包括在用戶移動項目時進行自動渲染、用來重新排序列表的輔助方法(moveItemInArray)以及在列表之間傳輸項目(transferArrayItem):


{{movie}}


drop(event: CdkDragDrop) {
moveItemInArray(this.movies, event.previousIndex, event.currentIndex);
}

有關拖放的更多信息請閱讀:

https://material.angular.io/cdk/drag-drop/overview

改進的 Select 可訪問性

通過在 mat-form-field 中使用原生 select 元素來改進應用程序的可訪問性。原生 select 在性能、可訪問性和可用性方面有一定優勢,但保持了 mat-select,可以完全控制選項的顯示。

有關 mat-select 和 mat-form-field 的更多信息請閱讀:

https://material.angular.io/components/select/overview

Angular Elements

Angular Elements 現在支持使用 Web 標準進行內容投射來自定義元素。

This content can be projected!

啟動合作伙伴

Angular 在社區中取得了巨大的成功,並一直致力於與最近啟動的幾個社區項目合作。

  • Angular Console——一個可下載的控制檯,用於在本地計算機上啟動和運行 Angular 項目(https://angularconsole.com/);
  • @angular/fire——AngularFire 在 npm 上有了一個新主頁,併為 Angular 提供了第一個穩定版本(https://github.com/angular/angularfire2 );
  • NativeScript——現在可以使用 NativeScript 為 Web 和已安裝的移動設備構建單個項目(https://docs.nativescript.org/code-sharing/intro);
  • StackBlitz——StackBlitz 2.0 已經發布,包括了 Angular 語言服務以及更多特性,如選項卡式編輯(https://stackblitz.com/fork/angular)。

文檔更新

angular.io 上的文檔現在包含了 Angular CLI 的參考資料。

依賴更新

現在已經更新了主要的第三方依賴項。

  • TypeScript 3.1;
  • RxJS 6.3;
  • Node 10——已經添加了對 Node 10 的支持,但仍然支持 8。

關於 Ivy

Angular 官方一直致力於 Ivy 計劃——下一代渲染管道,Ivy 目前正在積極開發當中,不屬於 v7 版本,現在開始驗證它與現有應用程序的向後兼容性,並將在未來幾個月內推出 Ivy 的預覽版本。


分享到:


相關文章: