1. 程式人生 > >angular2版本叠代之特性追蹤

angular2版本叠代之特性追蹤

生命 .com color bsp 關鍵字 特性 erro npm collect

# 2.0.0 — 2.4

升級前:

1、確保沒有使用extends關鍵字實現OnInit的繼承,以及沒有用任何的生命周期中,而是全部改用implements。

2、停止使用deep imports,這些符號不再是公共api的一部分。

3、停止使用Renderer.invokeElementMethod,因為該方法已被刪除,目前沒有其他的替換方案。

4、停止使用DefaultIterableDiffer,KeyValueDiffers#factories, 或 IterableDiffers#factories

升級期間:

更新你項目中所有angular相關依賴包到最新版本,如果你是使用的 Linux/Mac,可以使用如下命令升級:

npm install @angular/{animations,common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router}@‘^2.0.0‘ typescript@‘>=2.1.0 <2.4.0‘

升級後:

目前沒有建議的操作

# 2.4 — 4.4

升級前:

1、確保沒有使用extends關鍵字實現OnInit的繼承,以及沒有用任何的生命周期中,而是全部改用implements。
2、停止使用deep imports,這些符號不再是公共api的一部分。

3、停止使用Renderer.invokeElementMethod,因為該方法已被刪除,目前沒有其他的替換方案。

4、停止使用DefaultIterableDiffer,KeyValueDiffers#factories, 或 IterableDiffers#factories

升級期間:

如果你在應用中使用了ng動畫,需要在你應用的跟模塊(NgModule)添加以下引入:import BrowserAnimationsModule from @angular/platform-browser/animations。

angular4+增加了一個novalidate屬性給表單元素,當你引入FormsModule時,為了使原生表單的功能生效,需要使用ngNoForm或者增加ngNativeValidate屬性標識(備註:novalidate 屬性是一個布爾屬性。是h5的一個新屬性,novalidate 屬性規定當提交表單時不對表單數據(輸入)進行驗證)

用RendererFactoryV2替換RootRenderer

If you use Animations and tests, add mods[1].NoopAnimationsModule to your TestBed.initTestEnvironment call.

更新你項目中所有angular相關依賴包到最新版本,如果你是使用的 Linux/Mac,可以使用如下命令升級

npm install @angular/{animations,common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router}@^4.4.0 typescript@‘>=2.1.0 <2.4.0‘

升級後:

將template重命名為ng-template。(備註:從angular4+開始,<template>將會被刪除,因為template太通用了,導致了一些命名上的沖突,所以現在angular團隊決定以ng作為名稱的前綴)

用InjectionToken替換掉所有的OpaqueToken

如果你調用了DifferFactory.create(...),刪除ChangeDetectorRef 參數。

停止給ErrorHandler構造函數傳任何參數。

如果你使用了ngProbeToken,請確保執行了依賴的引入( import ngProbeToken from @angular/core instead of @angular/platform-browser)

如果你在使用TrackByFn,請用TrackByFunction替換它。

如果你引入了任何的動畫服務或工具,需要從額外的動畫依賴包導入(import xxx from @angular/animations)。

用ngTemplateOutletContext替換掉ngOutletContext。

用IterableChangeRecord替換掉CollectionChangeRecord。

使用Renderer2替換掉Renderer。

使用queryParamsHandling代替preserveQueryParams。

從HttpModule和Http服務切換到HttpClientModule和HttpClientservice,HttpClient簡化了默認的人機工程學(你不再需要映射到json),並且現在支持類型返回值和攔截器。詳見angular.io。

如果你從@angular/platform-browser中引入了DOCUMENT的使用,現在需要改成從@angular/common引入(即import this from @angular/common)

# Angular4升級點及新特性:

一、改進

1、體積更小,速度更快:

Angular應用程序變得更小更快,並且在未來幾個月將進一步改進框架。

2、更好的模版引擎:

改進了AoT,將生成的代碼的大小減少約60%。如果模板越復雜,那麽優化的代碼也會越多

3、動畫模塊改進:

Angular將動畫部分從@angular/core拆分出來,單獨打包。將核心模塊精簡後,在不使用動畫時產品中將不包含冗余的動畫代碼。如果需要動畫,可使用相關功能自行導入

新版本中的模板對於綁定語法做了些修改,將支持開發者使用if/else類型的語法,並支持在展開Observable(可觀察對象)等代碼中分配局部變量

二、新特性

1、增強 ngIf 和 ngFor 語法

模板綁定語法進行了幾個有用的更改。現在可以使用if / else樣式語法,並分配局部變量,例如在展開observable時

2、服務端渲染(Angular Universal)

原先的Angular Universal是社區人員維護的,後被angular官方采用。目前在4.0.0版本中,將大部分的代碼集成在@angular/platform-server模塊中。為大家帶來更好的服務端渲染體驗,更簡單Api調用。請參見基於Angular4的服務端渲染demo: https://github.com/z827101859/angular-universal 。之後,官方會為大家帶來更好更全面的例子。

3、TypeScript 2.1 和 2.2 的兼容

Angular已更新為更新版本的TypeScript,提高了ngc的速度,並且有更好的類型檢查機制

4、模板的Source Maps

當模板中的某些內容發生錯誤時,Angular會生成源映射,從而為原始模板提供有意義的上下文。

# 其他

1、兼容性:該版本向後兼容大多數應用中的2.x.x系列

2、為什麽跳過Angular 3?

根據Angular團隊首席開發Igor Minar的說法:隨著Angular 2的發布,Angular團隊引入了語義化版本控制規範,即:將語義化版本用三組數字來表示,按照major.minor.patch的順序排列,如2.3.1。

之前最新的Angular router版本號是3.3.0,而其它模塊的版本號是2.2.0,由於版本號不同步,團隊計劃將其同步,直接采用4.0.0作為新版的版本號。

angular2版本叠代之特性追蹤