SlideShare une entreprise Scribd logo
1  sur  39
An gu la r
User Group Taiwan
Angular 5 全新功能探索
多奇數位創意有限公司
技術總監 黃保翕 ( Will 保哥 )
部落格:http://blog.miniasp.com/
An gu la r
User Group Taiwan
Angular 5.0.0 (pentagonal-donut) CHANGELOG
• https://github.com/angular/angular/blob/master/CHANGELOG.md
Angular CLI 1.5 (Turing) Release Notes
• https://github.com/angular/angular-cli/releases/tag/v1.5.0
Version 5.0.0 of Angular Now Available
• https://blog.angular.io/version-5-0-0-of-angular-now-available-37e414935ced
Angular 5 升級攻略 (教學影片)
• https://www.facebook.com/will.fans/videos/1870546876307781/
查看版本資訊
• ng -v
Angular 與 Angular CLI 新版資訊
An gu la r
User Group Taiwan
Angular 5 升級攻略
https://www.facebook.com/will.fans/videos/1870546876307781/
An gu la r
User Group Taiwan
查詢目前 Angular 版本
• ng -v
查詢 @angular/core 最新版本編號
• npm show @angular/core@* version --json
修正 package.json 特定套件版號
• 將所有 @angular/* 套件版本修改為 "^5.0.0"
升級其他 Angular 5 相依套件
基本升級步驟
An gu la r
User Group Taiwan
升級 @angular/cli 到 1.5 以上版本
• npm install @angular/cli@1.5
升級 TypeScript 到 2.4 以上版本
• npm install typescript@2.4
升級 rxjs 到 5.5 以上版本
• npm install rxjs@5.5
升級 codelyzer 到 4 以上版本
• npm install codelyzer@4
重新安裝所有套件
• npm install
升級其他 Angular 5 相依套件
An gu la r
User Group Taiwan
Angular CLI 1.5 全新特性
An gu la r
User Group Taiwan
https://github.com/angular/angular-cli/wiki/new
ng new --help
ng new demo5 --routing
ng new demo5 --routing --minimal
ng new demo5 --routing --skip-test
ng new demo5 --routing --style scss
ng new demo5 --routing --skip-commit
ng new 預設建立 Angular 5.0.0 專案
An gu la r
User Group Taiwan
ng build --prod
ng build 預設啟用 Build Optimizer
An gu la r
User Group Taiwan
在 Angular CLI 1.4 時為實驗性功能
• ng build --prod --build-optimizer
Build Optimizer 有兩個主要任務
1. 標示所有 "pure" 的元件,以強化 tree shaking 效果
2. 移除所有用不到的 Angular Decorators 程式碼
大幅減少 bundle 過後的 JS 原始碼
• 不用特別修正程式碼,打包後的 JS 檔案直接比前版減少 15% ~ 30%
關於 Build Optimizer 的基本原理
An gu la r
User Group Taiwan
Angular CLI 1.4.9 + Angular 4.4.6
An gu la r
User Group Taiwan
Angular CLI 1.5.0 + Angular 5.0.0
An gu la r
User Group Taiwan
Angular 5 編譯器
An gu la r
User Group Taiwan
TypeScript 2.3 公開 Transformation API 技術
• http://blog.scottlogic.com/2017/05/02/typescript-compiler-api-revisited.html
Angular 編譯器改採 TS 的 Transform API 實現增量編譯
• 透過增量編譯的 AOT 建置,最高可縮減 95% 編譯時間
• 目前 ng serve 預設並沒有啟動 --aot 選項 (建議加上)
ng serve --aot
• 未來的 Angular CLI 版本,將會預設啟用 --aot 選項
大幅改進 AOT 編譯效能
An gu la r
User Group Taiwan
Angular 5 效能提升
An gu la r
User Group Taiwan
新的 Decorator 屬性: preserveWhitespaces
https://angular.io/api/core/Component#preserveWhitespaces
An gu la r
User Group Taiwan
src/tsconfig.app.json
修改 preserveWhitespaces 全域設定
An gu la r
User Group Taiwan
在 HTML 範本中保留特定標籤中的空白
An gu la r
User Group Taiwan
預設的情況下,Zone 會監聽所有的「非同步事件」
• DOM Events
• XMLHttpRequest (AJAX)
• Timers
如何調整 Zone 以提升效能
An gu la r
User Group Taiwan
修正 main.ts
platformBrowserDynamic()
.bootstrapModule(AppModule, {ngZone: 'noop'})
.then( ref => {} );
範例程式
• https://stackblitz.com/edit/ng-component-state
NG5 可以把整個 App 排除在 Zone 之外
An gu la r
User Group Taiwan
Angular 5 元件化技術
An gu la r
User Group Taiwan
三個內建的 Pipes 元件已提供新版 (有破壞性更新)
• date
• number
• currency
Angular 5 不再使用 intl API (也不用再匯入 Polyfills 了)
• 以前這些 Pipes 非常依賴瀏覽器的 intl API 實作
• 不支援 intl 的瀏覽器就要載入 Polyfills 但卻導致結果不如預期
• Angular 5 重新製作一套以 CLDR 為主的 i18n 支援
• comparing the pipe behavior between v4 and v5
詳細的變更紀錄
• https://github.com/angular/angular/blob/master/CHANGELOG.md#i18n-pipes
全新的國際化 Pipes 元件 (intl)
An gu la r
User Group Taiwan
匯入 DeprecatedI18NPipesModule 模組即可 (範例)
若要繼續使用舊的 Pipes 元件
An gu la r
User Group Taiwan
Angular 5 已經標示淘汰 Http 元件,下個版本可能會移除
建議使用新的 HttpClient 服務元件 (Angular 4.3+)
• 範例:https://stackblitz.com/edit/angular-http-client
升級方式
• app.module.ts
• 將 @angular/http 修改為 @angular/common/http
• 將 HttpModule 修改為 HttpClientModule
• 建構式注入 HttpClient 服務元件
• 改掉前版常用的 map(res => res.json()) 使用習慣 (不需要了)
請升級 Http 服務元件
An gu la r
User Group Taiwan
從範本取得 ngForm 物件實體
• <form name="form1" #f="ngForm">
以上 ngForm 就是從 "form" 這個 directive 匯出的名稱
Angular 5 支援多重 exportAs 名稱
exportAs 可以匯出多個名稱
An gu la r
User Group Taiwan
Angular 5 Universal
Server Side Rendering (SSR)
An gu la r
User Group Taiwan
不支援 Browser 端的 DOM 物件,造成許多第三方套件無法使用
• 例如:window、document、navigator、…
頁面開啟後 HttpClient 發出的 API 要求會在瀏覽器端重複呼叫一次!
• 也就是 Server 及 Client 端都會各呼叫一次
當 SSR 需要額外呼叫 API 時,網頁回應時間會拉長!
Angular CLI 沒有自動產生 SSR 相關檔案的功能
• 快有了:https://github.com/angular/devkit/pull/254
早期 Angular SSR 常見的問題
An gu la r
User Group Taiwan
加入了 Domino 到 platform-server
• Server-side DOM impl. based on Mozilla's dom.js
支援在伺服器端可以直接呼叫與執行 DOM 的 API
• 可以更順利地呼叫第三方函式庫
支援伺服器端 DOM 介面實作
An gu la r
User Group Taiwan
保存伺服器狀態的模組
• ServerTransferStateModule
取得伺服器狀態的模組
• BrowserTransferStateModule
範例程式:https://github.com/evertonrobertoauler/universal-demo-v5
git clone https://github.com/evertonrobertoauler/universal-demo-v5.git
cd universal-demo-v5
npm install
npm run build
node dist/server.js
更輕易從 Server 傳遞狀態到用戶端
An gu la r
User Group Taiwan
Angular 5 表單功能
An gu la r
User Group Taiwan
控制表單資料繫結/驗證的時間點
• 預設事件
• change
• 新增事件
• blur
• submit
支援 Reactive Forms 控制項選項中設定 asyncValidators
Angular 5 表單功能
An gu la r
User Group Taiwan
早期的寫法
• <input name="firstName" ngModel>
新版的寫法
• <input name="firstName" ngModel
[ngModelOptions]="{updateOn: 'blur'}">
• <form
[ngFormOptions]="{updateOn: 'submit'}">
設定 Template Driven Forms 更新時機
An gu la r
User Group Taiwan
早期的寫法
• new FormGroup(value);
• new FormControl(value, [], [myValidator])
新版的寫法
• new FormGroup(value, {
updateOn: 'blur'
});
• new FormControl(value, {
updateOn: 'blur',
asyncValidators: [myValidator]
})
設定 Reactive Forms 更新時機
An gu la r
User Group Taiwan
Angular 5 其他增強
An gu la r
User Group Taiwan
採用全新的 lettable operators 可以大幅解決 side effects
大大增加 code splitting / tree shaking 的功效!
參考資料:Build and Treeshaking
支援 RxJS 5.5
早期寫法 新版寫法
An gu la r
User Group Taiwan
以下為全新的路由事件 (依照順序執行)
• GuardsCheckStart
• ChildActivationStart
• ActivationStart
• GuardsCheckEnd
• ResolveStart
• ResolveEnd
• ActivationEnd
• ChildActivationEnd
完整版事件執行順序:https://angular.io/api/router/Event
全新的路由生命週期事件
An gu la r
User Group Taiwan
全新的路由生命週期事件 (範例程式)
An gu la r
User Group Taiwan
Version 5.0.0 of Angular Now Available – Angular Blog
5.0.0 pentagonal-donut (2017-11-01)
Release 1.5 – Turing · angular/angular-cli
Angular 5 升級攻略 (影片)
Angular Update Guide
Angular Universal: server-side rendering
ASP.NET Core 2.0 & Angular 5 (+) advanced starter
相關連結
An gu la r
User Group Taiwan
Thank you
An gu la r
User Group Taiwan
The Will Will Web
記載著 Will 在網路世界的學習心得與技術分享
• http://blog.miniasp.com/
Will 保哥的技術交流中心 (臉書粉絲專頁)
• http://www.facebook.com/will.fans
Will 保哥的噗浪
• http://www.plurk.com/willh/invite
Will 保哥的推特
• https://twitter.com/Will_Huang
聯絡資訊

Contenu connexe

Tendances

Introduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training SessionIntroduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training SessionAnwarul Islam
 
Angular 6 Form Validation with Material
Angular 6 Form Validation with MaterialAngular 6 Form Validation with Material
Angular 6 Form Validation with MaterialMalika Munaweera
 
用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端
用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端 用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端
用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端 升煌 黃
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event HandlingWebStackAcademy
 
Advanced Git Presentation By Swawibe
Advanced Git Presentation By SwawibeAdvanced Git Presentation By Swawibe
Advanced Git Presentation By SwawibeMd Swawibe Ul Alam
 
ASP.NET Core MVC with EF Core code first
ASP.NET Core MVC with EF Core code firstASP.NET Core MVC with EF Core code first
ASP.NET Core MVC with EF Core code firstMd. Aftab Uddin Kajal
 
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Edureka!
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?VMware Tanzu Korea
 
Angular Advanced Routing
Angular Advanced RoutingAngular Advanced Routing
Angular Advanced RoutingLaurent Duveau
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요Jo Hoon
 
[GitOps] Argo CD on GKE (v0.9.2).pdf
[GitOps] Argo CD on GKE (v0.9.2).pdf[GitOps] Argo CD on GKE (v0.9.2).pdf
[GitOps] Argo CD on GKE (v0.9.2).pdfJo Hoon
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
 
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧升煌 黃
 

Tendances (20)

Introduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training SessionIntroduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training Session
 
Angular 6 Form Validation with Material
Angular 6 Form Validation with MaterialAngular 6 Form Validation with Material
Angular 6 Form Validation with Material
 
Spring Security
Spring SecuritySpring Security
Spring Security
 
Git real slides
Git real slidesGit real slides
Git real slides
 
用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端
用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端 用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端
用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端
 
Introduction To Git
Introduction To GitIntroduction To Git
Introduction To Git
 
GitLab.pptx
GitLab.pptxGitLab.pptx
GitLab.pptx
 
Spring Security 5
Spring Security 5Spring Security 5
Spring Security 5
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event Handling
 
Advanced Git Presentation By Swawibe
Advanced Git Presentation By SwawibeAdvanced Git Presentation By Swawibe
Advanced Git Presentation By Swawibe
 
NestJS
NestJSNestJS
NestJS
 
ASP.NET Core MVC with EF Core code first
ASP.NET Core MVC with EF Core code firstASP.NET Core MVC with EF Core code first
ASP.NET Core MVC with EF Core code first
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
 
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
 
Angular Advanced Routing
Angular Advanced RoutingAngular Advanced Routing
Angular Advanced Routing
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
 
[GitOps] Argo CD on GKE (v0.9.2).pdf
[GitOps] Argo CD on GKE (v0.9.2).pdf[GitOps] Argo CD on GKE (v0.9.2).pdf
[GitOps] Argo CD on GKE (v0.9.2).pdf
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
 

Similaire à Angular 5 全新功能探索 @ JSDC2017

Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)Will Huang
 
Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Will Huang
 
Better use angular
Better use angularBetter use angular
Better use angularYanru Li
 
Schematics 實戰
Schematics 實戰Schematics 實戰
Schematics 實戰志龍 陳
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)Will Huang
 
Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸Will Huang
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)Will Huang
 
AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用
AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用
AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用Jeff Wu
 
基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发mysqlops
 
美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术团队
 
台灣 AngularJS 社群小聚
台灣 AngularJS 社群小聚台灣 AngularJS 社群小聚
台灣 AngularJS 社群小聚Jimmy Ho
 
广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdfbj_qa
 
企業導入 Angular 作為前端開發的好處
企業導入 Angular 作為前端開發的好處企業導入 Angular 作為前端開發的好處
企業導入 Angular 作為前端開發的好處Oomusou Xiao
 
Angular js twmvc#17
Angular js twmvc#17Angular js twmvc#17
Angular js twmvc#17twMVC
 
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本延胜 黄
 
使用Eclipse自定义扩展点
使用Eclipse自定义扩展点使用Eclipse自定义扩展点
使用Eclipse自定义扩展点tangyouhua
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索Will Huang
 

Similaire à Angular 5 全新功能探索 @ JSDC2017 (20)

Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)Angular 4 網站開發最佳實務 (Modern Web 2017)
Angular 4 網站開發最佳實務 (Modern Web 2017)
 
Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)
 
Better use angular
Better use angularBetter use angular
Better use angular
 
Schematics 實戰
Schematics 實戰Schematics 實戰
Schematics 實戰
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)
 
Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)
 
AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用
AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用
AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用
 
基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发
 
美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用
 
台灣 AngularJS 社群小聚
台灣 AngularJS 社群小聚台灣 AngularJS 社群小聚
台灣 AngularJS 社群小聚
 
广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf
 
Swagger
SwaggerSwagger
Swagger
 
企業導入 Angular 作為前端開發的好處
企業導入 Angular 作為前端開發的好處企業導入 Angular 作為前端開發的好處
企業導入 Angular 作為前端開發的好處
 
Angular js twmvc#17
Angular js twmvc#17Angular js twmvc#17
Angular js twmvc#17
 
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本
 
Ali-tomcat
Ali-tomcatAli-tomcat
Ali-tomcat
 
使用Eclipse自定义扩展点
使用Eclipse自定义扩展点使用Eclipse自定义扩展点
使用Eclipse自定义扩展点
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
 

Plus de Will Huang

深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)Will Huang
 
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境Will Huang
 
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索Will Huang
 
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!Will Huang
 
你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧Will Huang
 
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)Will Huang
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)Will Huang
 
從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點Will Huang
 
RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門Will Huang
 
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)Will Huang
 
Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)Will Huang
 
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)Will Huang
 
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Will Huang
 
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)Will Huang
 
AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)Will Huang
 
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)Will Huang
 
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)Will Huang
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)Will Huang
 
以敏捷架構打造美國軟體外包專案的經驗談
以敏捷架構打造美國軟體外包專案的經驗談以敏捷架構打造美國軟體外包專案的經驗談
以敏捷架構打造美國軟體外包專案的經驗談Will Huang
 
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018Will Huang
 

Plus de Will Huang (20)

深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
 
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
 
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索
 
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
 
你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧
 
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
 
從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點
 
RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門
 
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
 
Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)
 
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
 
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)
 
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
 
AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)
 
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
 
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
 
以敏捷架構打造美國軟體外包專案的經驗談
以敏捷架構打造美國軟體外包專案的經驗談以敏捷架構打造美國軟體外包專案的經驗談
以敏捷架構打造美國軟體外包專案的經驗談
 
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
 

Angular 5 全新功能探索 @ JSDC2017

  • 1. An gu la r User Group Taiwan Angular 5 全新功能探索 多奇數位創意有限公司 技術總監 黃保翕 ( Will 保哥 ) 部落格:http://blog.miniasp.com/
  • 2. An gu la r User Group Taiwan Angular 5.0.0 (pentagonal-donut) CHANGELOG • https://github.com/angular/angular/blob/master/CHANGELOG.md Angular CLI 1.5 (Turing) Release Notes • https://github.com/angular/angular-cli/releases/tag/v1.5.0 Version 5.0.0 of Angular Now Available • https://blog.angular.io/version-5-0-0-of-angular-now-available-37e414935ced Angular 5 升級攻略 (教學影片) • https://www.facebook.com/will.fans/videos/1870546876307781/ 查看版本資訊 • ng -v Angular 與 Angular CLI 新版資訊
  • 3. An gu la r User Group Taiwan Angular 5 升級攻略 https://www.facebook.com/will.fans/videos/1870546876307781/
  • 4. An gu la r User Group Taiwan 查詢目前 Angular 版本 • ng -v 查詢 @angular/core 最新版本編號 • npm show @angular/core@* version --json 修正 package.json 特定套件版號 • 將所有 @angular/* 套件版本修改為 "^5.0.0" 升級其他 Angular 5 相依套件 基本升級步驟
  • 5. An gu la r User Group Taiwan 升級 @angular/cli 到 1.5 以上版本 • npm install @angular/cli@1.5 升級 TypeScript 到 2.4 以上版本 • npm install typescript@2.4 升級 rxjs 到 5.5 以上版本 • npm install rxjs@5.5 升級 codelyzer 到 4 以上版本 • npm install codelyzer@4 重新安裝所有套件 • npm install 升級其他 Angular 5 相依套件
  • 6. An gu la r User Group Taiwan Angular CLI 1.5 全新特性
  • 7. An gu la r User Group Taiwan https://github.com/angular/angular-cli/wiki/new ng new --help ng new demo5 --routing ng new demo5 --routing --minimal ng new demo5 --routing --skip-test ng new demo5 --routing --style scss ng new demo5 --routing --skip-commit ng new 預設建立 Angular 5.0.0 專案
  • 8. An gu la r User Group Taiwan ng build --prod ng build 預設啟用 Build Optimizer
  • 9. An gu la r User Group Taiwan 在 Angular CLI 1.4 時為實驗性功能 • ng build --prod --build-optimizer Build Optimizer 有兩個主要任務 1. 標示所有 "pure" 的元件,以強化 tree shaking 效果 2. 移除所有用不到的 Angular Decorators 程式碼 大幅減少 bundle 過後的 JS 原始碼 • 不用特別修正程式碼,打包後的 JS 檔案直接比前版減少 15% ~ 30% 關於 Build Optimizer 的基本原理
  • 10. An gu la r User Group Taiwan Angular CLI 1.4.9 + Angular 4.4.6
  • 11. An gu la r User Group Taiwan Angular CLI 1.5.0 + Angular 5.0.0
  • 12. An gu la r User Group Taiwan Angular 5 編譯器
  • 13. An gu la r User Group Taiwan TypeScript 2.3 公開 Transformation API 技術 • http://blog.scottlogic.com/2017/05/02/typescript-compiler-api-revisited.html Angular 編譯器改採 TS 的 Transform API 實現增量編譯 • 透過增量編譯的 AOT 建置,最高可縮減 95% 編譯時間 • 目前 ng serve 預設並沒有啟動 --aot 選項 (建議加上) ng serve --aot • 未來的 Angular CLI 版本,將會預設啟用 --aot 選項 大幅改進 AOT 編譯效能
  • 14. An gu la r User Group Taiwan Angular 5 效能提升
  • 15. An gu la r User Group Taiwan 新的 Decorator 屬性: preserveWhitespaces https://angular.io/api/core/Component#preserveWhitespaces
  • 16. An gu la r User Group Taiwan src/tsconfig.app.json 修改 preserveWhitespaces 全域設定
  • 17. An gu la r User Group Taiwan 在 HTML 範本中保留特定標籤中的空白
  • 18. An gu la r User Group Taiwan 預設的情況下,Zone 會監聽所有的「非同步事件」 • DOM Events • XMLHttpRequest (AJAX) • Timers 如何調整 Zone 以提升效能
  • 19. An gu la r User Group Taiwan 修正 main.ts platformBrowserDynamic() .bootstrapModule(AppModule, {ngZone: 'noop'}) .then( ref => {} ); 範例程式 • https://stackblitz.com/edit/ng-component-state NG5 可以把整個 App 排除在 Zone 之外
  • 20. An gu la r User Group Taiwan Angular 5 元件化技術
  • 21. An gu la r User Group Taiwan 三個內建的 Pipes 元件已提供新版 (有破壞性更新) • date • number • currency Angular 5 不再使用 intl API (也不用再匯入 Polyfills 了) • 以前這些 Pipes 非常依賴瀏覽器的 intl API 實作 • 不支援 intl 的瀏覽器就要載入 Polyfills 但卻導致結果不如預期 • Angular 5 重新製作一套以 CLDR 為主的 i18n 支援 • comparing the pipe behavior between v4 and v5 詳細的變更紀錄 • https://github.com/angular/angular/blob/master/CHANGELOG.md#i18n-pipes 全新的國際化 Pipes 元件 (intl)
  • 22. An gu la r User Group Taiwan 匯入 DeprecatedI18NPipesModule 模組即可 (範例) 若要繼續使用舊的 Pipes 元件
  • 23. An gu la r User Group Taiwan Angular 5 已經標示淘汰 Http 元件,下個版本可能會移除 建議使用新的 HttpClient 服務元件 (Angular 4.3+) • 範例:https://stackblitz.com/edit/angular-http-client 升級方式 • app.module.ts • 將 @angular/http 修改為 @angular/common/http • 將 HttpModule 修改為 HttpClientModule • 建構式注入 HttpClient 服務元件 • 改掉前版常用的 map(res => res.json()) 使用習慣 (不需要了) 請升級 Http 服務元件
  • 24. An gu la r User Group Taiwan 從範本取得 ngForm 物件實體 • <form name="form1" #f="ngForm"> 以上 ngForm 就是從 "form" 這個 directive 匯出的名稱 Angular 5 支援多重 exportAs 名稱 exportAs 可以匯出多個名稱
  • 25. An gu la r User Group Taiwan Angular 5 Universal Server Side Rendering (SSR)
  • 26. An gu la r User Group Taiwan 不支援 Browser 端的 DOM 物件,造成許多第三方套件無法使用 • 例如:window、document、navigator、… 頁面開啟後 HttpClient 發出的 API 要求會在瀏覽器端重複呼叫一次! • 也就是 Server 及 Client 端都會各呼叫一次 當 SSR 需要額外呼叫 API 時,網頁回應時間會拉長! Angular CLI 沒有自動產生 SSR 相關檔案的功能 • 快有了:https://github.com/angular/devkit/pull/254 早期 Angular SSR 常見的問題
  • 27. An gu la r User Group Taiwan 加入了 Domino 到 platform-server • Server-side DOM impl. based on Mozilla's dom.js 支援在伺服器端可以直接呼叫與執行 DOM 的 API • 可以更順利地呼叫第三方函式庫 支援伺服器端 DOM 介面實作
  • 28. An gu la r User Group Taiwan 保存伺服器狀態的模組 • ServerTransferStateModule 取得伺服器狀態的模組 • BrowserTransferStateModule 範例程式:https://github.com/evertonrobertoauler/universal-demo-v5 git clone https://github.com/evertonrobertoauler/universal-demo-v5.git cd universal-demo-v5 npm install npm run build node dist/server.js 更輕易從 Server 傳遞狀態到用戶端
  • 29. An gu la r User Group Taiwan Angular 5 表單功能
  • 30. An gu la r User Group Taiwan 控制表單資料繫結/驗證的時間點 • 預設事件 • change • 新增事件 • blur • submit 支援 Reactive Forms 控制項選項中設定 asyncValidators Angular 5 表單功能
  • 31. An gu la r User Group Taiwan 早期的寫法 • <input name="firstName" ngModel> 新版的寫法 • <input name="firstName" ngModel [ngModelOptions]="{updateOn: 'blur'}"> • <form [ngFormOptions]="{updateOn: 'submit'}"> 設定 Template Driven Forms 更新時機
  • 32. An gu la r User Group Taiwan 早期的寫法 • new FormGroup(value); • new FormControl(value, [], [myValidator]) 新版的寫法 • new FormGroup(value, { updateOn: 'blur' }); • new FormControl(value, { updateOn: 'blur', asyncValidators: [myValidator] }) 設定 Reactive Forms 更新時機
  • 33. An gu la r User Group Taiwan Angular 5 其他增強
  • 34. An gu la r User Group Taiwan 採用全新的 lettable operators 可以大幅解決 side effects 大大增加 code splitting / tree shaking 的功效! 參考資料:Build and Treeshaking 支援 RxJS 5.5 早期寫法 新版寫法
  • 35. An gu la r User Group Taiwan 以下為全新的路由事件 (依照順序執行) • GuardsCheckStart • ChildActivationStart • ActivationStart • GuardsCheckEnd • ResolveStart • ResolveEnd • ActivationEnd • ChildActivationEnd 完整版事件執行順序:https://angular.io/api/router/Event 全新的路由生命週期事件
  • 36. An gu la r User Group Taiwan 全新的路由生命週期事件 (範例程式)
  • 37. An gu la r User Group Taiwan Version 5.0.0 of Angular Now Available – Angular Blog 5.0.0 pentagonal-donut (2017-11-01) Release 1.5 – Turing · angular/angular-cli Angular 5 升級攻略 (影片) Angular Update Guide Angular Universal: server-side rendering ASP.NET Core 2.0 & Angular 5 (+) advanced starter 相關連結
  • 38. An gu la r User Group Taiwan Thank you
  • 39. An gu la r User Group Taiwan The Will Will Web 記載著 Will 在網路世界的學習心得與技術分享 • http://blog.miniasp.com/ Will 保哥的技術交流中心 (臉書粉絲專頁) • http://www.facebook.com/will.fans Will 保哥的噗浪 • http://www.plurk.com/willh/invite Will 保哥的推特 • https://twitter.com/Will_Huang 聯絡資訊

Notes de l'éditeur

  1. 設定 preserveWhitespaces 移除空白字元
  2. Angular 2 — Take Advantage Of The exportAs Property https://netbasal.com/angular-2-take-advantage-of-the-exportas-property-81374ce24d26
  3. Angular 5 universal with Transfer State using @angular/cli https://medium.com/@evertonrobertoauler/angular-5-universal-with-transfer-state-using-angular-cli-19fe1e1d352c