Angular 6 新特性

Angular 6 重點(diǎn)關(guān)注工具鏈以及工具鏈在 Angular 中的運(yùn)行速度問題逼庞。
這次更新還包括框架包(@angular/core、@angular/common、@angular/compiler 等)、Angular CLI字逗、Angular Material + CDK等

ng update

ng update 是一種新的 CLI 命令,它可分析你的package.json宅广,并基于對 Angular 的了解向你的應(yīng)用程序推薦更新葫掉。官方升級(jí)手冊鏈接如下:
https://update.angular.io/

ng update可以幫助你使用正確版本的依賴包,讓你的依賴包與你的應(yīng)用程序同步跟狱,使用 schematics 時(shí)俭厚,第三方還能提供腳本更新。如果你的某個(gè)依賴包提供了ng update schematic驶臊,那么它在進(jìn)行重大更改時(shí)會(huì)自動(dòng)更新代碼挪挤!

ng update不會(huì)取代你的軟件包管理器,而是在后臺(tái)使用 npm 或 yarn 來管理依賴包关翎,除了更新和監(jiān)視依賴包外扛门,ng update還會(huì)在必要的時(shí)候?qū)δ愕捻?xiàng)目進(jìn)行改造。

例如纵寝,命令ng update @angular/core將會(huì)更新所有的 Angular 包以及 RxJS论寨、FTypeScript,它還將在這些包中運(yùn)行可用的 schematics 以保證版本是最新的爽茴。同時(shí)葬凳,這個(gè)命令還能自動(dòng)安裝rxjs-compat到你的應(yīng)用程序中,以使 RxJS v6 更加流暢闹啦。

學(xué)習(xí)更多關(guān)于如何使用ng update , 開始學(xué)習(xí)如何創(chuàng)建您自己的 ng update 語法沮明,可以參考 rxjs 的 package.json 的入口,它關(guān)聯(lián)了 collection.json窍奋。

ng add

另一項(xiàng)新的 CLI 命令ng add 將使你的項(xiàng)目更容易添加新功能。ng add使用軟件包管理器來下載新的依賴包并調(diào)用安裝腳本酱畅,它可以通過更改配置和添加額外的依賴包(如 polyfills)來更新你的應(yīng)用琳袄。

你可在新的ng new應(yīng)用程序中嘗試以下動(dòng)作:

  • ng add @angular/pwa:添加一個(gè) app manifest 和 service worker,將你的應(yīng)用程序變成 PWA纺酸。
  • ng add @ng-bootstrap/schematics:將ng-bootstrap添加到你的應(yīng)用程序中窖逗。
  • ng add @angular/material:安裝并設(shè)置 Angular Material 和主題,注冊新的初始組件 到ng generate中餐蔬。
  • ng add @clr/angular@next:安裝設(shè)置 VMWare Clarity碎紊。

由于 ng add 基于 schematics 和 Npm 佑附,我們希望庫和社區(qū)支持我們構(gòu)建一個(gè) ng add 支持包的生態(tài)圈。創(chuàng)建ng add的示例如下:Angular Metarial 的 ng add schemetic

Angular Elements

Angular Elements 的第一個(gè)版本專注于在現(xiàn)有的 Angular 應(yīng)用程序中啟動(dòng) Angular 組件仗考,方法是將它們注冊為 Custom Elements音同,目前已被廣泛用于 angular.io 內(nèi)容管理系統(tǒng)中,它嵌入 HTML秃嗜,可動(dòng)態(tài)啟動(dòng)系統(tǒng)功能权均。

注冊 Angular Component 作為 custom element,或者學(xué)習(xí)更多的 Angular Elements锅锨。

Angular Material + CDK 組件

最值得一提的是用于顯示分層數(shù)據(jù)的樹形控件叽赊,遵循數(shù)據(jù)表組件的模式,CDK 包含樹的核心指令必搞,而 Angular Material 則提供與頂層的 Material Design 樣式相同的體驗(yàn)必指。

除了 tree 組件之外,我們還提供了 badgebottom-sheet-components恕洲。Angular還更新了徽章(badge)和底部菜單欄的組件取劫,徽章用于顯示小而有用的信息,例如未讀信息的數(shù)量研侣。

目前谱邪,@angular/cdk/overlay 軟件包是 CDK 最強(qiáng)大的基礎(chǔ)架構(gòu)之一,你可以利用他們來構(gòu)建自己的 UI 庫庶诡。

Angular Material 初始組件

一旦運(yùn)行ng add @angular/material并添加材料到現(xiàn)有的應(yīng)用程序中惦银,就能夠生成 3 個(gè)新的初始組件。


20180505183004853.gif

Material Sidenav
Material Sidenav 是帶有應(yīng)用程序名稱和側(cè)面導(dǎo)航的工具欄的初始組件末誓,它基于斷點(diǎn)窗口(breakpoints)進(jìn)行響應(yīng)扯俱。例如,運(yùn)行如下代碼:

ng generate @angular/material:material-nav

image.png

Material Dashboard
Material Dashboard 是包含動(dòng)態(tài)網(wǎng)格列表的啟動(dòng)組件喇澡。例如迅栅,運(yùn)行下面的代碼:

ng generate @angular/material:material-dashboard


image.png

Material Data Table
Material Data Table 已預(yù)配置了一個(gè)用于排序和分頁的datasource。例如:

ng generate @angular/material:material-table

image.png

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

CLI Workspaces

CLI v6 現(xiàn)已支持多項(xiàng)目工作區(qū)晴玖,如多個(gè)應(yīng)用程序或庫读存,CLI 項(xiàng)目用 angular.json 取代 angular-cli.json 構(gòu)建和配置項(xiàng)目。每個(gè) CLI 工作區(qū)都有項(xiàng)目呕屎,每個(gè)項(xiàng)目都有目標(biāo)让簿,每個(gè)目標(biāo)都可以有配置。例如:

angular.json:
{
  "projects": {
    "my-project-name": {
      "projectType": "application",
      "architect": {
        "build": {
          "configurations": {
            "production": {},
            "demo": {},
            "staging": {},
          }
        },
        "serve": {},
        "extract-i18n": {},
        "test": {},
      }
    },
    "my-project-name-e2e": {}
  },
}

關(guān)于angular-cli.json更多的配置可以參考下面的鏈接:
https://github.com/angular/angular-cli/wiki/angular-workspace

庫支持

接下來介紹 CLI 最重要的一項(xiàng)功能:支持創(chuàng)建和構(gòu)建庫秀睛。例如尔当,執(zhí)行下面的代碼:

ng generate library <name>
20180505183651403.gif

該命令將在 CLI 工作區(qū)內(nèi)創(chuàng)建一個(gè)庫,并對其進(jìn)行配置以進(jìn)行測試和構(gòu)建蹂安。使用Angular CLI 創(chuàng)建庫可以查看下面的鏈接:
https://github.com/angular/angular-cli/wiki/stories-create-library

Tree Shakable Providers

為了讓你的應(yīng)用更小椭迎,我們將服務(wù)引用模塊改為模塊引用服務(wù)锐帜,這讓我們只需要構(gòu)建在模塊里注入的服務(wù)。例如畜号,之前的寫法是這樣的:

@NgModule({
   ...
   providers: [ MyService ]
})
export class AppModule {}

服務(wù)的定義如下:

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() { }
}

動(dòng)畫性能提升

更新后药蜻,以后將不再需要網(wǎng)頁動(dòng)畫 polyfill。這意味著你可以從應(yīng)用程序中刪除此 polyfill替饿,可以節(jié)省大約 47KB 的內(nèi)存语泽,同時(shí)提高 Safari 中的動(dòng)畫性能。

RxJS v6

Angular 6 也將支持RxJS v6视卢,RxJS v6 于上個(gè)月發(fā)布踱卵。RxJS v6 帶來了一個(gè)向后兼容的軟件包 rxjs-compat,它可以讓你的應(yīng)用程序保持運(yùn)行据过。關(guān)于如何從 RxJS 5.5 遷移到 6 惋砂,可以查看下面的鏈接資料:
https://github.com/ReactiveX/rxjs/blob/master/MIGRATION.md

長期支持(LTS)

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

之前只有 v4 和 v6 是 LTS 版本绳锅,但為了使開發(fā)者從一個(gè)主版本更新到另一個(gè)主版本更容易西饵,并給予項(xiàng)目充足的時(shí)間來規(guī)劃更新,Angular 團(tuán)隊(duì)表示從 v4 開始鳞芙,將擴(kuò)大對所有主版本的長期支持眷柔。

每個(gè)主版本的支持時(shí)間是18個(gè)月,其中原朝,前6個(gè)月是積極開發(fā)階段驯嘱,接下的 12 個(gè)月是錯(cuò)誤修正和安全補(bǔ)丁階段。

如何更新到 Angular 6.0.0

讀者可以訪問 update.angular.io 來得到升級(jí)應(yīng)用的信息和指導(dǎo)喳坠。

image.png

更新通常遵循 3 個(gè)步驟鞠评,請使用新 ng update 工具:

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

Ivy

關(guān)于我們下一代的渲染引擎 Ivy,Ivy 當(dāng)前處于開發(fā)階段御板,還不是 v6 的一部分锥忿。關(guān)于更多的信息可以訪問官方關(guān)于Angular 6的發(fā)布信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怠肋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子淹朋,更是在濱河造成了極大的恐慌笙各,老刑警劉巖钉答,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異杈抢,居然都是意外死亡数尿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門惶楼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來右蹦,“玉大人,你說我怎么就攤上這事歼捐『温剑” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵豹储,是天一觀的道長贷盲。 經(jīng)常有香客問我,道長剥扣,這世上最難降的妖魔是什么巩剖? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮钠怯,結(jié)果婚禮上佳魔,老公的妹妹穿的比我還像新娘。我一直安慰自己晦炊,他們只是感情好鞠鲜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刽锤,像睡著了一般镊尺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上并思,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天庐氮,我揣著相機(jī)與錄音,去河邊找鬼宋彼。 笑死弄砍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的输涕。 我是一名探鬼主播音婶,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼莱坎!你這毒婦竟也來了衣式?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碴卧,沒想到半個(gè)月后弱卡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡住册,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年婶博,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荧飞。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凡人,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叹阔,到底是詐尸還是另有隱情挠轴,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布条获,位于F島的核電站忠荞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏帅掘。R本人自食惡果不足惜委煤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望修档。 院中可真熱鬧碧绞,春花似錦、人聲如沸吱窝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽院峡。三九已至兴使,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間照激,已是汗流浹背发魄。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俩垃,地道東北人励幼。 一個(gè)月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像口柳,于是被迫代替她去往敵國和親苹粟。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容