本文首發地址:Angular4.0.0正式發佈,附新特性及升級指南git
做者|孫薇github
編輯|尾尾typescript
經歷了6個RC版本以後,Angular項目組終於發佈了新版,即正式版 Angular 4.0.0。新版的 Angular 有哪些值得關注的點,究竟帶來了哪些新特性?如何升級?且看本文一一道來。npm
速度更快、體積更小服務器
這個版本不只速度更快、體積更小,還對內置指令NgFor和NgIf以及模板的source map等功能進行了優化。app
向後兼容async
該版本向後兼容大多數應用中的2.x.x系列。ide
強力優化代碼優化
新版本還優化了View引擎,改進後AoT生成的代碼將減小約60%,並且模板越複雜,所優化的代碼量就越大。動畫
動畫部分單獨打包
Angular將動畫部分從@angular/core拆分出來,單獨打包。將核心模塊精簡後,在不使用動畫時產品中將不包含冗餘的動畫代碼。若是須要動畫,可以使用相關功能自行導入。
此次的正式版本帶來的新特性以下:
優化了內置指令nglf和ngFor
新版本中的模板對於綁定語法作了些修改,將支持開發者使用if/else類型的語法,並支持在展開Observable(可觀察對象)等代碼中分配局部變量。
<div *ngIf="userList | async as users; else loading">
<user-profile *ngFor="let user of users; count as count" [user]="user">
</user-profile>
<div>{{count}} total users</div>
</div>
<ng-template #loading>Loading...</ng-template>
Angular Universal的服務器端渲染
Universal原本只是一個社區主導型項目,容許開發者在服務器端運行Angular,後被Angular官方集成。這也是集成以後Universal的首次發佈,包含了過去數月中Universal團隊的工做成果。目前大多功能已集成到@angular/platform-server模塊中,移步看Github上的相關案例:
或查看Rob Wormald的 Demo Repository:
TypeScript 2.1與2.2的兼容
Angular的TypeScript目前已更新到2.2版本,一方面提升了ngc的速度,同時在應用中進行type檢查時,體驗也更優秀。當前版本向下兼容。
模板的源映射
目前若是模板出現錯誤,咱們會生成源映射,以瞭解原始模板中的來龍去脈及背景環境。
升級到最新版本很是簡單,不過要確認一點:是否須要動畫。大多狀況下可用下面的命令來解決問題:
在Linux/Mac上:
npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations}@latest typescript@latest --save
在Windows上:
npm install @angular/common@latest @angular/compiler@latest @angular/compiler-cli@latest @angular/core@latest @angular/forms@latest @angular/http@latest @angular/platform-browser@latest @angular/platform-browser-dynamic@latest @angular/platform-server@latest @angular/router@latest @angular/animations@latest typescript@latest --save
而後再運行經常使用的ng serve或者npm start命令,就完成了。
特殊狀況下,若是開發者須要依賴動畫Animations,可在root NgModule中經過@angular/platform-browser/animations導入新的BrowserAnimationsModule模塊,不然可能會遇到錯誤。不建議使用@angular/core,請經過import { trigger, state, style, transition, animate } from '@angular/animations'來導入。
爲了方便你們升級,官方更貼心地推出了 Angular Update Guide (Angular Update Guide )功能,點擊可快速選擇適合本身的升級方案。
根據Angular團隊首席開發Igor Minar的說法:隨着Angular 2的發佈,Angular團隊引入了語義化版本控制規範,即:將語義化版本用三組數字來表示,按照major.minor.patch的順序排列,如2.3.1。
Patch版本每週發佈,一般只修復問題,不加入新的功能。Minor版本每個月發佈,加入一些新的功能,但相對舊版原本說沒有太大更改。Major版本每半年發佈一次,加入一些新功能,並可能帶來一些重大更改。
以前最新的Angular router版本號是3.3.0,而其它模塊的版本號是2.2.0,因爲版本號不一樣步,團隊計劃將其同步,直接採用4.0.0做爲新版的版本號。