標籤:

Angular 6正式版發布,都有哪些新功能

Angular 6正式版發布,都有哪些新功能

7 人贊了文章

在Angular 5發布半年之後,Angular 6在昨天正式發布,那麼在這個版本有哪些新功能呢?新版本重點關注工具鏈以及工具鏈在 Angular 中的運行速度問題。除此之外,這次更新還包括框架包(@angular/core、@angular/common、@angular/compiler 等)、Angular CLI、Angular Material + CDK等。

ng update

ng update 是一種新的 CLI 命令,它可分析你的package.json,並基於對 Angular 的了解向你的應用程序推薦更新。官方升級手冊鏈接如下:

update.angular.io/

ng update可以幫助你使用正確版本的依賴包,讓你的依賴包與你的應用程序同步,使用 schematics 時,第三方還能提供腳本更新。如果你的某個依賴包提供了ng update schematic,那麼它在進行重大更改時會自動更新代碼!

ng update不會取代你的軟體包管理器,而是在後台使用 npm 或 yarn 來管理依賴包,除了更新和監視依賴包外,ng update還會在必要的時候對你的項目進行改造。

例如,命令ng update @angular/core將會更新所有的 Angular 包以及 RxJS、FTypeScript,它還將在這些包中運行可用的 schematics 以保證版本是最新的。同時,這個命令還能自動安裝rxjs-compat到你的應用程序中,以使 RxJS v6 更加流暢。

學習更多關於如何使用ng update , 開始學習如何創建您自己的 ng update 語法,可以參考 rxjs 的 package.json 的入口,它關聯了 collection.json。

ng add

另一項新的 CLI 命令ng add 將使你的項目更容易添加新功能。ng add使用軟體包管理器來下載新的依賴包並調用安裝腳本,它可以通過更改配置和添加額外的依賴包(如 polyfills)來更新你的應用。

你可在新的ng new應用程序中嘗試以下動作:

  • ng add @angular/pwa:添加一個 app manifest 和 service worker,將你的應用程序變成 PWA。
  • ng add @ng-bootstrap/schematics:將ng-bootstrap添加到你的應用程序中。
  • ng add @angular/material:安裝並設置 Angular Material 和主題,註冊新的初始組件 到ng generate中。
  • ng add @clr/angular@next:安裝設置 VMWare Clarity。

由於 ng add 基於 schematics 和 Npm ,我們希望庫和社區支持我們構建一個 ng add 支持包的生態圈。創建ng add的示例如下:Angular Metarial 的 ng add schemetic

Angular Elements

Angular Elements 的第一個版本專註於在現有的 Angular 應用程序中啟動 Angular 組件,方法是將它們註冊為 Custom Elements,目前已被廣泛用於 angular.io 內容管理系統中,它嵌入 HTML,可動態啟動系統功能。

註冊 Angular Component 作為 custom element,或者學習更多的 Angular Elements。

Angular Material + CDK 組件

最值得一提的是用於顯示分層數據的樹形控制項,遵循數據表組件的模式,CDK 包含樹的核心指令,而 Angular Material 則提供與頂層的 Material Design 樣式相同的體驗。

除了 tree 組件之外,我們還提供了 badge 和 bottom-sheet-components。Angular還更新了徽章(badge)和底部菜單欄的組件,徽章用於顯示小而有用的信息,例如未讀信息的數量。

目前,@angular/cdk/overlay 軟體包是 CDK 最強大的基礎架構之一,你可以利用他們來構建自己的 UI 庫。

Angular Material 初始組件

一旦運行ng add @angular/material並添加材料到現有的應用程序中,就能夠生成 3 個新的初始組件。

Material Sidenav

Material Sidenav 是帶有應用程序名稱和側面導航的工具欄的初始組件,它基於斷點窗口(breakpoints)進行響應。例如,運行如下代碼:

ng generate @angular/material:material-nav

Material Dashboard

Material Dashboard 是包含動態網格列表的啟動組件。例如,運行下面的代碼:

ng generate @angular/material:material-dashboard

Material Data Table

Material Data Table 已預配置了一個用於排序和分頁的datasource。例如:

ng generate @angular/material:material-table

想要了解更多的資料:Angular Material Schematics

CLI Workspaces

CLI v6 現已支持多項目工作區,如多個應用程序或庫,CLI 項目用 angular.json 取代 angular-cli.json 構建和配置項目。每個 CLI 工作區都有項目,每個項目都有目標,每個目標都可以有配置。例如:

angular.json:

{

"projects": {

"my-project-name": {

"projectType": "application",

"architect": {

"build": {

"configurations": {

"production": {},

"demo": {},

"staging": {},

}

},

"serve": {},

"extract-i18n": {},

"test": {},

}

},

"my-project-name-e2e": {}

},

}

關於angular-cli.json更多的配置可以參考下面的鏈接:

github.com/angular/angu

庫支持

接下來介紹 CLI 最重要的一項功能:支持創建和構建庫。例如,執行下面的代碼:

ng generate library <name>

該命令將在 CLI 工作區內創建一個庫,並對其進行配置以進行測試和構建。使用Angular CLI 創建庫可以查看下面的鏈接:

github.com/angular/angu

Tree Shakable Providers

為了讓你的應用更小,我們將服務引用模塊改為模塊引用服務,這讓我們只需要構建在模塊里注入的服務。例如,之前的寫法是這樣的:

@NgModule({

...

providers: [ MyService ]

})

export class AppModule {}

服務的定義如下:

my-service.ts:

import { Injectable } from @angular/core;

@Injectable()

export class MyService {

constructor() { }

}

那麼,在新版的語法是下面這樣的,NgModule 不再需要引用。

my-service.ts

import { Injectable } from @angular/core;

@Injectable({

providedIn: root,

})

export class MyService {

constructor() { }

}

動畫性能提升

更新後,以後將不再需要網頁動畫 polyfill。這意味著你可以從應用程序中刪除此 polyfill,可以節省大約 47KB 的內存,同時提高 Safari 中的動畫性能。

RxJS v6

Angular 6 也將支持RxJS v6,RxJS v6 於上個月發布。RxJS v6 帶來了一個向後兼容的軟體包 rxjs-compat,它可以讓你的應用程序保持運行。關於如何從 RxJS 5.5 遷移到 6 ,可以查看下面的鏈接資料:

github.com/ReactiveX/rx

長期支持(LTS)

Angular 表示他們正在將長期支持版本擴展到所有主版本中。

之前只有 v4 和 v6 是 LTS 版本,但為了使開發者從一個主版本更新到另一個主版本更容易,並給予項目充足的時間來規劃更新,Angular 團隊表示從 v4 開始,將擴大對所有主版本的長期支持。

每個主版本的支持時間是18個月,其中,前6個月是積極開發階段,接下的 12 個月是錯誤修正和安全補丁階段。

如何更新到 Angular 6.0.0

讀者可以訪問 update.angular.io 來得到升級應用的信息和指導。

更新通常遵循 3 個步驟,請使用新 ng update 工具:

  • 更新 @ angular / cli;
  • 更新你的 Angular 框架包;
  • 更新其他依賴包。

Ivy

關於我們下一代的渲染引擎 Ivy,Ivy 當前處於開發階段,還不是 v6 的一部分。關於更多的信息可以訪問官方關於Angular 6的發布信息。


推薦閱讀:

C++對編程學習的重要性
機加工廠的老闆如果整天都很忙,就證明一件事……
提高工件加工精度與效率的幾個重要方面,這些你都會了嗎?
Python 3.7.0 正式版發布,新特性翻譯
Using the Stanford CoreNLP API

TAG:科技 | 編程 |