SlideShare a Scribd company logo
Angular 开发技巧
多奇數位創意有限公司
技術總監 黃保翕 ( Will 保哥 )
http://blog.miniasp.com/
Will 保哥 (黃保翕)
• 现任多奇數位創意有限公司技术总监
• 台湾 Angular 社群核心成员 (Angular Taiwan)
• 2018 年荣获 Angular/Web GDE (谷歌开发者专家)
• 2008 至今连续 11 度获选 Microsoft MVP
• 每年在台湾约有十几场演讲与数十场培训课程
• 出版著作有 ASP.NET MVC 2 开发实战、Windows
Phone 开发实战、ASP.NET MVC 4 开发实战等书籍。
Angular 开发心法
先拥有观念,再培养速度
拥有观念
• Angular 启动生命周期
• Angular 执行生命周期
• Angular 窗体开发技巧
• Angular 状态管理技巧
• Angular 组件开发观念
• 熟悉常用第三方组件
• 多页面路由开发观念
• 效能调校与变更侦测
• 单元测试与整合测试
• 模块封装与发行
培养速度
• 培养盲打能力
• 先求准度再谈速度
• 务必熟悉开发工具
• 编程的心流模式 (Flow)
Angular CLI
改善前端开发环境的终极武器
使用 Schematics 实现开发自动化
• ng new demo1 --routing --style css
• ng generate component hello
• ng update
• 自定义代码产生器
• 以 Manfred Steyer 的 angular-crud 为例
• ng g angular-crud:crud-module hotel
• ng add @angular/elements
• ng add @angular/material
• ng add @angular/pwa
• ng add @clr/angular
• ng add @nativescript/schematics
• ng add ng-zorro-antd
• ng add ngcli-wallaby
ng new / ng add / ng generate 交互式界面
ng new demo1 --routing --style css
ng add @angular/material
自动更新与升级 Angular 应用程序
• https://update.angular.io/
• 更新过时的 rxjs 写法
npm install -g rxjs-tslint
rxjs-5-to-6-migrate -p src/tsconfig.app.json
npm uninstall rxjs-compat
• 升级到 Angular v7 最新版本
npm install @angular/cli
ng update @angular/cli @angular/core
ng update @angular/material
善用 Angular CLI v7 的 Bundle Budgets 功能
angular.json
包的预算警示 200kB / 错误 500kB
包的预算警示 200kB / 错误 250kB
Visual Studio Code
最贴心的 Angular 开发工具
导航程序代码的利器
• 不要使用 VSCode 资源管理器 (EXPLORER)
• 一律使用 Ctrl+E 快捷键查找档案 ( 命令: workbench.action.quickOpen )
• 善加利用模糊比对机制 (Fuzzy matching)
• 快速开启最近档案
• 后退:Alt+ ( 命令: workbench.action.navigateBack )
• 前进:Alt+ ( 命令: workbench.action.navigateForward )
• 编辑器上方的导航路径 (Breadcrumbs)
• 启动导航:Ctrl+Shift+. ( 命令: breadcrumbs.toggleToOn )
• 向左移动:Ctrl+ ( 命令: breadcrumbs.focusPrevious )
• 向右移动:Ctrl+ ( 命令: breadcrumbs.focusNext )
Angular Extension Pack
• 请安装 Angular Extension Pack 扩充套件
Angular Language Service
• 提供组件模板中所有必要的 IntelliSense 支援
• 提供 AOT 诊断讯息
• 提供 Directives 相关信息
• 转到定义 (Go to definition)
• 快速切换至组件模板 ( *.html )
• 快捷键:alt+o (Windows) / shift+alt+o (macOS)
• 快速切换至组件样式 ( *.css )
• 快捷键:alt+i (Windows) / shift+alt+i (macOS)
• 快速切换至组件类 ( *.ts )
• 快捷键:alt+u (Windows) / shift+alt+u (macOS)
• 快速切换至组件 Spec 檔 ( *.spec.ts )
• 快捷键:alt+p (Windows) / shift+alt+p (macOS)
快速切换组件内的不同档案
养成使用代码片段的习惯
• 大量利用 Code Snippets 完成代码
• ng-import-* 导入常见的 Angular 模块与服务组件
• a-* Angular v7 Snippets
• ng-* Angular Snippets
• ngrx-* Angular NgRx Snippets
• ngxs-* Angular Ngxs Snippets
• m-* Angular Material Design Snippets
• rx-* RxJS Snippets for both TypeScript and JavaScript
使用 TSLint 优化代码品质
• 内建命令
• TSLint: Fix all auto-fixable problems ( 命令: tslint.fixAllProblems )
• 用户设置
• "tslint.autoFixOnSave": true
• TSLint core rules ( tslint.json )
• import-blacklist
• prefer-const
多利用 TypeScript 重构功能 (Refactoring)
• Code Actions = Quick Fixes
• Ctrl+.
• Rename symbol
• F2
• Change All Occurrences
• Ctrl+F2 / CMD+F2
• Move TS
• Move TypeScript files and update
relative imports
• Refactoring actions
• Extract Method
• Extract Variable
• Extract function
• Extract constant
• Suggestion Code Action ( ... )
• Generate 'get' and 'set' accessors
• Move to new file
• Convert to async function
• Convert between named imports and namespace
imports
活用 TypeScript 类型声明
• JSON to TS
• Ctrl+Alt+V 从剪贴簿中的 JSON 字符串转换为 TypeScript 界面
• Ctrl+Alt+S 从选取的 JSON 字符串转换为 TypeScript 界面
• Paste JSON as Code
• 支持 TypeScript, Python, Go, Ruby, C#, Java, Swift, Rust, Kotlin, C++, Flow, Objective-C,
JavaScript, Elm, and JSON Schema 等程序语言。
• 先选取语言模式,再执行 Paste JSON as Code/Type 命令
• Paste JSON as Code ( 命令: quicktype.pasteJSONAsTypesAndSerialization )
• Paste JSON as Type ( 命令: quicktype.pasteJSONAsTypes )
• Document This
• 连按 Ctrl+Alt+D 两次就会自动产生批注模板!
自动产生代码文档
• https://angular.io/guide/styleguide
• 每个档案只放一个组件
• 每个档案不超过 400 行,每个函式不超过 75 行
• 命名不要用 dash 也不要偷懒用缩写
• ……
• 有空就认真看一遍
• 没空就用 Angular CLI
• ng generate 产生程序代码骨架
• ng lint 检查程序代码撰写风格 ( codelyzer )
• 搭配 TSLint 自动进行风格检查
遵循 Angular Style Guide 指引方针
相关连结
• Version 7 of Angular — CLI Prompts, Virtual Scroll, Drag and Drop and more
• How Did Angular CLI Budgets Save My Day And How They Can Save Yours
• Angular Extension Pack - Visual Studio Marketplace
• Angular CLI Command Reference
• Angular Update Guide
• Angular Style Guide
THANK YOU
2018 ngChina 开发者大会

More Related Content

PPTX
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
PPTX
快快樂樂學 Angular 2 開發框架
PPTX
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
PPTX
SQL Server 資料庫版本控管
PPTX
Micro-frontends with Angular 10 (Modern Web 2020)
PPTX
ASP.NET Core 6.0 全新功能探索
PPTX
AKS 與開發人員體驗 (Kubernetes 大講堂)
PPTX
RxJS 6 新手入門
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
快快樂樂學 Angular 2 開發框架
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
SQL Server 資料庫版本控管
Micro-frontends with Angular 10 (Modern Web 2020)
ASP.NET Core 6.0 全新功能探索
AKS 與開發人員體驗 (Kubernetes 大講堂)
RxJS 6 新手入門

What's hot (20)

PPTX
Windows Container 101: dotNET, Container, Kubernetes
PPTX
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
PPTX
快速上手 Windows Containers 容器技術 (Docker Taipei)
PPTX
Frontend Devops at Cloudinsight
PPTX
宅學習 Firebase
PPTX
Angular 4 網站開發最佳實務 (Modern Web 2017)
PPTX
開發人員不可不知的 Windows Container 容器技術預覽
PDF
React.js what do you really mean?
PPTX
Angular 4 新手入門攻略完全制霸
PPTX
极速 Angular 开发:效能调校技巧 (ngChina 2019)
PDF
容器與 Gitlab CI 應用
PPTX
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
PPTX
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
PPTX
前端转行 DevOps 经验分享
PDF
容器式軟體開發介紹
PDF
微服務自己動手做
PPTX
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
PPTX
Visual Studio 2017 新功能探索 (Study4.TW)
PDF
企業導入容器經驗分享與開源技能培養
PPTX
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
Windows Container 101: dotNET, Container, Kubernetes
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
快速上手 Windows Containers 容器技術 (Docker Taipei)
Frontend Devops at Cloudinsight
宅學習 Firebase
Angular 4 網站開發最佳實務 (Modern Web 2017)
開發人員不可不知的 Windows Container 容器技術預覽
React.js what do you really mean?
Angular 4 新手入門攻略完全制霸
极速 Angular 开发:效能调校技巧 (ngChina 2019)
容器與 Gitlab CI 應用
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
前端转行 DevOps 经验分享
容器式軟體開發介紹
微服務自己動手做
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
Visual Studio 2017 新功能探索 (Study4.TW)
企業導入容器經驗分享與開源技能培養
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
Ad

More from Will Huang (19)

PPTX
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
PPTX
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
PPTX
你一定不能不知道的 Markdown 寫作技巧
PPTX
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
PPTX
從實戰經驗看到的 K8S 導入痛點
PPTX
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
PPTX
Protractor: The Hacker way (NG-MY 2019)
PPTX
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
PPTX
Angular 7 全新功能探索 (Angular Taiwan 2018)
PPTX
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
PPTX
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
PPTX
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
PPTX
以敏捷架構打造美國軟體外包專案的經驗談
PPTX
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
PPTX
迎接嶄新的Windows容器叢集架構:Kubernetes
PPTX
TypeScript 綜合格鬥技
PPTX
Angular 5 全新功能探索 @ JSDC2017
PPTX
申請 Let's Encrypt 免費 SSL 憑證一次就上手
PPTX
我的 Windows 平台自動化經驗:基礎批次檔撰寫實務
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
你一定不能不知道的 Markdown 寫作技巧
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
從實戰經驗看到的 K8S 導入痛點
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
Protractor: The Hacker way (NG-MY 2019)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
Angular 7 全新功能探索 (Angular Taiwan 2018)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
以敏捷架構打造美國軟體外包專案的經驗談
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
迎接嶄新的Windows容器叢集架構:Kubernetes
TypeScript 綜合格鬥技
Angular 5 全新功能探索 @ JSDC2017
申請 Let's Encrypt 免費 SSL 憑證一次就上手
我的 Windows 平台自動化經驗:基礎批次檔撰寫實務
Ad

Angular 开发技巧 (2018 ngChina 开发者大会)

  • 1. Angular 开发技巧 多奇數位創意有限公司 技術總監 黃保翕 ( Will 保哥 ) http://blog.miniasp.com/
  • 2. Will 保哥 (黃保翕) • 现任多奇數位創意有限公司技术总监 • 台湾 Angular 社群核心成员 (Angular Taiwan) • 2018 年荣获 Angular/Web GDE (谷歌开发者专家) • 2008 至今连续 11 度获选 Microsoft MVP • 每年在台湾约有十几场演讲与数十场培训课程 • 出版著作有 ASP.NET MVC 2 开发实战、Windows Phone 开发实战、ASP.NET MVC 4 开发实战等书籍。
  • 4. 拥有观念 • Angular 启动生命周期 • Angular 执行生命周期 • Angular 窗体开发技巧 • Angular 状态管理技巧 • Angular 组件开发观念 • 熟悉常用第三方组件 • 多页面路由开发观念 • 效能调校与变更侦测 • 单元测试与整合测试 • 模块封装与发行
  • 5. 培养速度 • 培养盲打能力 • 先求准度再谈速度 • 务必熟悉开发工具 • 编程的心流模式 (Flow)
  • 7. 使用 Schematics 实现开发自动化 • ng new demo1 --routing --style css • ng generate component hello • ng update • 自定义代码产生器 • 以 Manfred Steyer 的 angular-crud 为例 • ng g angular-crud:crud-module hotel • ng add @angular/elements • ng add @angular/material • ng add @angular/pwa • ng add @clr/angular • ng add @nativescript/schematics • ng add ng-zorro-antd • ng add ngcli-wallaby
  • 8. ng new / ng add / ng generate 交互式界面 ng new demo1 --routing --style css
  • 10. 自动更新与升级 Angular 应用程序 • https://update.angular.io/ • 更新过时的 rxjs 写法 npm install -g rxjs-tslint rxjs-5-to-6-migrate -p src/tsconfig.app.json npm uninstall rxjs-compat • 升级到 Angular v7 最新版本 npm install @angular/cli ng update @angular/cli @angular/core ng update @angular/material
  • 11. 善用 Angular CLI v7 的 Bundle Budgets 功能 angular.json
  • 14. Visual Studio Code 最贴心的 Angular 开发工具
  • 15. 导航程序代码的利器 • 不要使用 VSCode 资源管理器 (EXPLORER) • 一律使用 Ctrl+E 快捷键查找档案 ( 命令: workbench.action.quickOpen ) • 善加利用模糊比对机制 (Fuzzy matching) • 快速开启最近档案 • 后退:Alt+ ( 命令: workbench.action.navigateBack ) • 前进:Alt+ ( 命令: workbench.action.navigateForward ) • 编辑器上方的导航路径 (Breadcrumbs) • 启动导航:Ctrl+Shift+. ( 命令: breadcrumbs.toggleToOn ) • 向左移动:Ctrl+ ( 命令: breadcrumbs.focusPrevious ) • 向右移动:Ctrl+ ( 命令: breadcrumbs.focusNext )
  • 16. Angular Extension Pack • 请安装 Angular Extension Pack 扩充套件
  • 17. Angular Language Service • 提供组件模板中所有必要的 IntelliSense 支援 • 提供 AOT 诊断讯息 • 提供 Directives 相关信息 • 转到定义 (Go to definition)
  • 18. • 快速切换至组件模板 ( *.html ) • 快捷键:alt+o (Windows) / shift+alt+o (macOS) • 快速切换至组件样式 ( *.css ) • 快捷键:alt+i (Windows) / shift+alt+i (macOS) • 快速切换至组件类 ( *.ts ) • 快捷键:alt+u (Windows) / shift+alt+u (macOS) • 快速切换至组件 Spec 檔 ( *.spec.ts ) • 快捷键:alt+p (Windows) / shift+alt+p (macOS) 快速切换组件内的不同档案
  • 19. 养成使用代码片段的习惯 • 大量利用 Code Snippets 完成代码 • ng-import-* 导入常见的 Angular 模块与服务组件 • a-* Angular v7 Snippets • ng-* Angular Snippets • ngrx-* Angular NgRx Snippets • ngxs-* Angular Ngxs Snippets • m-* Angular Material Design Snippets • rx-* RxJS Snippets for both TypeScript and JavaScript
  • 20. 使用 TSLint 优化代码品质 • 内建命令 • TSLint: Fix all auto-fixable problems ( 命令: tslint.fixAllProblems ) • 用户设置 • "tslint.autoFixOnSave": true • TSLint core rules ( tslint.json ) • import-blacklist • prefer-const
  • 21. 多利用 TypeScript 重构功能 (Refactoring) • Code Actions = Quick Fixes • Ctrl+. • Rename symbol • F2 • Change All Occurrences • Ctrl+F2 / CMD+F2 • Move TS • Move TypeScript files and update relative imports • Refactoring actions • Extract Method • Extract Variable • Extract function • Extract constant • Suggestion Code Action ( ... ) • Generate 'get' and 'set' accessors • Move to new file • Convert to async function • Convert between named imports and namespace imports
  • 22. 活用 TypeScript 类型声明 • JSON to TS • Ctrl+Alt+V 从剪贴簿中的 JSON 字符串转换为 TypeScript 界面 • Ctrl+Alt+S 从选取的 JSON 字符串转换为 TypeScript 界面 • Paste JSON as Code • 支持 TypeScript, Python, Go, Ruby, C#, Java, Swift, Rust, Kotlin, C++, Flow, Objective-C, JavaScript, Elm, and JSON Schema 等程序语言。 • 先选取语言模式,再执行 Paste JSON as Code/Type 命令 • Paste JSON as Code ( 命令: quicktype.pasteJSONAsTypesAndSerialization ) • Paste JSON as Type ( 命令: quicktype.pasteJSONAsTypes )
  • 23. • Document This • 连按 Ctrl+Alt+D 两次就会自动产生批注模板! 自动产生代码文档
  • 24. • https://angular.io/guide/styleguide • 每个档案只放一个组件 • 每个档案不超过 400 行,每个函式不超过 75 行 • 命名不要用 dash 也不要偷懒用缩写 • …… • 有空就认真看一遍 • 没空就用 Angular CLI • ng generate 产生程序代码骨架 • ng lint 检查程序代码撰写风格 ( codelyzer ) • 搭配 TSLint 自动进行风格检查 遵循 Angular Style Guide 指引方针
  • 25. 相关连结 • Version 7 of Angular — CLI Prompts, Virtual Scroll, Drag and Drop and more • How Did Angular CLI Budgets Save My Day And How They Can Save Yours • Angular Extension Pack - Visual Studio Marketplace • Angular CLI Command Reference • Angular Update Guide • Angular Style Guide
  • 26. THANK YOU 2018 ngChina 开发者大会

Editor's Notes

  • #5: Try latest Angular CLI Beta / RC, with Angular v7 and the new Ivy compiler, no install required thanks to npm and npx https://www.gurustop.net/blog/2018/10/11/4258/npm-npx-angular-beta-rc-next-angular-cli-ivy-compiler
  • #8: Try latest Angular CLI Beta / RC, with Angular v7 and the new Ivy compiler, no install required thanks to npm and npx https://www.gurustop.net/blog/2018/10/11/4258/npm-npx-angular-beta-rc-next-angular-cli-ivy-compiler
  • #13: How Did Angular CLI Budgets Save My Day And How They Can Save Yours https://medium.com/dailyjs/how-did-angular-cli-budgets-save-my-day-and-how-they-can-save-yours-300d534aae7a
  • #19: https://pixabay.com/zh/%E5%A5%B3%E5%AD%90-%E6%9E%84%E6%88%90-%E7%94%B5%E5%AD%90%E5%AD%A6%E4%B9%A0-%E5%A5%B3%E6%80%A7-%E5%A5%B3%E5%AD%A9-%E4%BA%BA-%E9%AB%98%E5%8A%A0%E7%B4%A2-%E5%85%B4%E5%A5%8B-1401616/
  • #20: https://pixabay.com/zh/%E5%A5%B3%E5%AD%90-%E6%9E%84%E6%88%90-%E7%94%B5%E5%AD%90%E5%AD%A6%E4%B9%A0-%E5%A5%B3%E6%80%A7-%E5%A5%B3%E5%AD%A9-%E4%BA%BA-%E9%AB%98%E5%8A%A0%E7%B4%A2-%E5%85%B4%E5%A5%8B-1401616/
  • #25: https://pixabay.com/zh/%E5%A5%B3%E5%AD%90-%E6%9E%84%E6%88%90-%E7%94%B5%E5%AD%90%E5%AD%A6%E4%B9%A0-%E5%A5%B3%E6%80%A7-%E5%A5%B3%E5%AD%A9-%E4%BA%BA-%E9%AB%98%E5%8A%A0%E7%B4%A2-%E5%85%B4%E5%A5%8B-1401616/