SlideShare a Scribd company logo
使用Angular.js開發企業級應用程式
陳小風
http://mvc.tw
 91mai就要買資深軟體工程師
 JSDC 2013 講師
 TechDay 2014 講師
IT邦幫忙鐵人賽優選
• 使用Jenkins打造.Net CI Server(2012)
• 使用Asp.Net MVC打造Api(2013)
講者介紹 – 陳鋒逸(小風)
2
3
什麼是Angular.js?
Angular.js
4
開源 JavaScript函式庫,由Google維護
幫助我們快速開發,良好的支援測試
支援開發單一頁面應用程式(SPA)
良好的支援物件導向程式設計,讓程式碼耦合性降低
友善的支援JQuery
使用JQuery製作表單
使用JQuery製作表單
6
JQuery的特色
•直覺
•與DOM綁定深
•View修改,Code也要改
•程式碼較多
參考: http://jquery.com/
JQuery的特色
•直覺
•與DOM綁定深
•View修改,Code也要改
•程式碼較多
參考: http://jquery.com/
使用Angular.js製作表單
Model
使用Angular.js製作表單
Action
使用Angular.js製作表單
宣告式開發
•定義Controller
•用Directive套用Library
•繫結Model
•互相連動
•View和Code分離
View Controller
 套版快
 分工明確
 好維護
小結
13
14
更方便的開發方式
工程師的困擾
•時間不夠
•需求吹又生
•功能不好用
•明天能好嗎?
靈異現象?
但是Plug In越用越多…
Setting會是什麼?
https://farm4.staticflickr.com/3099/2610267740_c718f6a644_o.jpg
到處都是Callback
我…在第幾層?
折扣=>運費=>分期
梭哈式開發法
•一個頁面,一隻程式!
•職責分離?
•物件導向?
•設計模式?
四字真言
會 動 就 好
22
http://photo.l99.com/bigger/11/1341838228447_n3ex30.jpg
http://pic.pimg.tw/z642319240/1383384010-3293348412_n.jpg
• 缺少Coding Standard
• 沒有統一的開發流程
• 每個人使用不同的寫法
• 程式碼零散不明確
混亂的根源
開發三步驟
Service
Factory
ConfigController
Provider
•決定角色
•撰寫劇本
•交給導演
單向繫結
Model Template+
View
One Way Binding
雙向繫結
Model Template+
View
Two Way Binding
追蹤更新
把複雜的語法打包
好找的程式碼
• 廣告編輯器
Demo
• 編輯同時預覽
• 不用JavaScript
• 動態換廣告樣式
海報產生器
• 決定欄位
• 套上Directive
• 收工!
快速完成表單
• 修改就可以看到效果
連動更新
 內建角色
 雙向繫結
 化繁為簡
小結
35
提供良好的彈性
可組合的設計 (DI)
36
什麼是相依性注入(DI)?
線上購物
註冊為
超商清單內建DI
Angular.js如何實現DI
•判斷參數名稱
•誰註冊為CVSService
•注入CVSService的實體
使用7-11做為超商
SevenEleven.js
向Angular註冊為CVSService
將超商更換為全家
Family.js
向Angular註冊為CVSService
其他程式完全不用改!!
專屬的HTML
•自己取名
•容易讀懂
抽換的彈性
•View和Code分離
•程式功能獨立
•耦合性低
•可切換
• 切換資料來源
Demo
• 前後端並行
商品展示頁
根據環境切換
資料來源名稱
取得資料
 使用假資料
開發時期
資料來源名稱
假資料
 資料由Api取得
正式環境
資料來源名稱
呼叫Api
 DOM自己取名
 功能可抽換
 前後端並行
小結
48
49
強大的火力支援
具備網頁開發常用的工具庫
jqLite – 基本的JQuery Selector
$http – 進行XHRRequest
$resource – 與Restful溝通
ngAnimate – 套用動畫效果
ngRoute – SPA應用程式的實現
好用Library支援
Angular-Kendo
容易使用
可分頁的Grid
容易使用
資料
繫結
+
使用JQuery呼叫Restful API
讀取
新增
修改
刪除
讓CRUD變簡單
透過$resource
將CRUD功能快
速實現
• 使用WebApi建立Blog的Api
• 快速實現CRUD
Demo
 內建常用功能
 許多現成套件
 簡單易用
小結
57
58
輕鬆的表單驗證
http://mvc.tw
簡單的加上驗證
 Required
 ng-minlength
 ng-maxlength
 ng-pattern
 自訂驗證
required
ng-minlength="5"
ng-maxlength="30"
錯誤提示訊息
可共用的驗證訊息
60
可共用的驗證訊息
61
 建立常用錯誤訊息樣版
error-messages.html
自訂驗證
輸入值
回傳驗證是否成功
套上驗證
• 套用表單驗證
• 共用錯誤提示樣版
Demo
64
支援自動化測試
我以為工作後測試軟體是…
實際上測試軟體有點像……
為什麼需要自動化測試?
使用Protractor
•量身打造
•模擬人類操作
•支援多瀏覽器
複雜表單的測試
 測試一個這樣的表單需要花多少時間?
交給自動化測試
•Just One Click
• 自動化測試
Demo
 減少重複的動作
 省下大量的時間
 多瀏覽器支援
小結
72
73
總結
 關注點分離(SoC)
 架構設計良好(SOLID)
 程式碼好維護
 社群活動踴躍
 相容性極佳
選擇Angular.js的理由
74
工商服務
75
公司介紹
http://goo.gl/6P7FmV
工作機會
http://goo.gl/sp9JPj
• APP開店平台
• PC、Mobile Web、IOS、Android一次搞定
• 誠徵
• F2E
• .Net Developer (Asp.Net Mvc)
• Ohters
http://mvc.tw
好活動需要支持
感謝 KKTIX 贊助 twMVC 活動報名平台
76
http://mvc.tw
好輸入法需要露出
77
http://skilltree.my/Sponsor/xin_zi_ran
http://mvc.tw
好課程需要支持
78
http://skilltree.my
謝謝各位
• 本投影片所包含的商標與文字皆屬原著作者所有。
• 本投影片使用的圖片皆從網路搜尋。
• 本著作係採用姓名標示-非商業性-相同方式分享 3.0 台灣授權。閱讀本授權條款,請到
http://creativecommons.org/licenses/by-nc-sa/3.0/tw/,或寫信至Creative Commons, 444 Castro
Street, Suite 900, Mountain View, California, 94041, USA.
h t t p : / / m v c . t w

More Related Content

PDF
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
PDF
專案分層架構 twMVC#18
PDF
動手打造 application framework-twMVC#15
PDF
twMVC#23 | 快速上手 Azure Functions
PDF
twMVC#29 | 當.Net Core 遇到AWS Lambda
PDF
twMVC#20 | ASP.NET MVC View 開發技巧小錦囊
PDF
twMVC#19 | 微信公眾平台申請與wechat api 開發血淚史
PDF
twMVC#23 | 一個Mobile App開發、維護與改版的愛恨之路
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
專案分層架構 twMVC#18
動手打造 application framework-twMVC#15
twMVC#23 | 快速上手 Azure Functions
twMVC#29 | 當.Net Core 遇到AWS Lambda
twMVC#20 | ASP.NET MVC View 開發技巧小錦囊
twMVC#19 | 微信公眾平台申請與wechat api 開發血淚史
twMVC#23 | 一個Mobile App開發、維護與改版的愛恨之路

What's hot (20)

PDF
twMVC#22 | 一個微信專案從0到.000的效能調教之路
PDF
twMVC#21 | 你所不知道的 Visual Studio
PDF
twMVC#19 | opserver監控服務的解決
PDF
twMVC#24 | 開發團隊的敏捷之路(未完成)
PDF
twMVC#28 | visual studio 2017 新功能介紹
PDF
ASP.NET MVC之實戰架構探討 -twMVC#5
PDF
ASP.NET MVC Model 的設計與使用 twMVC#10
PDF
一小時可以打造什麼服務Plus twMVC#18
PDF
twMVC#25 | ASP.NET MVC A/B Testing 的眉眉角角
PPTX
Asp.net mvc 概觀介紹
PDF
SignalR實戰技巧 twmvc#17
PDF
twMVC#29 -Learning Machine Learning with Movie Recommendation
PPTX
twMVC#31沒有 hdd 的網站重構 webform to mvc
PDF
輕鬆上手Asp.net web api 2.1-twMVC#14
PDF
twMVC#26 | Redis資料型別與場景的連結
PDF
如何在實務上使用TDD來開發 twmvc#12
PDF
Angular js twmvc#17
PDF
twMVC#22 | 什麼鬼的IOC與DI
PDF
Asp.net mvc 從無到有 -twMVC#2
PPTX
KSDG-ASP.NET MVC 5 Overview (偽三國誌)
twMVC#22 | 一個微信專案從0到.000的效能調教之路
twMVC#21 | 你所不知道的 Visual Studio
twMVC#19 | opserver監控服務的解決
twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#28 | visual studio 2017 新功能介紹
ASP.NET MVC之實戰架構探討 -twMVC#5
ASP.NET MVC Model 的設計與使用 twMVC#10
一小時可以打造什麼服務Plus twMVC#18
twMVC#25 | ASP.NET MVC A/B Testing 的眉眉角角
Asp.net mvc 概觀介紹
SignalR實戰技巧 twmvc#17
twMVC#29 -Learning Machine Learning with Movie Recommendation
twMVC#31沒有 hdd 的網站重構 webform to mvc
輕鬆上手Asp.net web api 2.1-twMVC#14
twMVC#26 | Redis資料型別與場景的連結
如何在實務上使用TDD來開發 twmvc#12
Angular js twmvc#17
twMVC#22 | 什麼鬼的IOC與DI
Asp.net mvc 從無到有 -twMVC#2
KSDG-ASP.NET MVC 5 Overview (偽三國誌)
Ad

Similar to twMVC#17 | 使用Angular.js開發大型系統架構 (20)

PDF
Better use angular
PDF
Angular js入门分享 by 王栋
PPTX
Study4 love.2016.2.20.ionic
PPTX
Angular.js & ASP.NET in Study4
PPTX
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
PDF
twMVC#09 | AngularJS 開發 ASP.NET MVC
PDF
AngularJS 開發 ASP.NET MVC -twMVC#9
PDF
程式人雜誌 -- 2015 年1月號
PDF
Single-Page Application Design Principles 101
PPTX
PPTX
微軟實戰課程日:玩轉雲端 技術與架構
PDF
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
PDF
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
PPTX
Asp.net mvc 基礎
PDF
twMVC#02 | ASP.NET MVC 從無到有
PPTX
Js高级技巧
PPTX
Angular 4 網站開發最佳實務 (Modern Web 2017)
PPTX
Angularjs
PDF
20141212 html5 及微軟跨平台佈局 long
PPTX
企業導入 Angular 作為前端開發的好處
Better use angular
Angular js入门分享 by 王栋
Study4 love.2016.2.20.ionic
Angular.js & ASP.NET in Study4
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練1(20160222)
twMVC#09 | AngularJS 開發 ASP.NET MVC
AngularJS 開發 ASP.NET MVC -twMVC#9
程式人雜誌 -- 2015 年1月號
Single-Page Application Design Principles 101
微軟實戰課程日:玩轉雲端 技術與架構
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
ASP.NET MVC 4 新功能介紹(快速上手) -twMVC#4
Asp.net mvc 基礎
twMVC#02 | ASP.NET MVC 從無到有
Js高级技巧
Angular 4 網站開發最佳實務 (Modern Web 2017)
Angularjs
20141212 html5 及微軟跨平台佈局 long
企業導入 Angular 作為前端開發的好處
Ad

More from twMVC (20)

PDF
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
PDF
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
PDF
twMVC#50 微服務上線後的救贖
PDF
twMVC 47_Elastic APM 的兩三事
PDF
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
PDF
.NET 7 家族新成員: Microsoft Orleans v7
PDF
twMVC#46 一探 C# 11 與 .NET 7 的神奇
PDF
twMVC#44 如何測試與保護你的 web application with playwright
PDF
twMVC#44 讓我們用 k6 來進行壓測吧
PDF
twMVC#43 Visual Studio 2022 新功能拆解
PDF
twMVC#43 YARP
PDF
twMVC#43 C#10 新功能介紹
PDF
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
PDF
twMVC#42 Azure IoT Hub for Smart Factory
PDF
twMVC#42 Windows容器導入由0到1
PDF
twMVC#42 讓我們用一種方式來開發吧
PDF
twMVC#41 hololens2 MR
PPTX
twMVC#41 The journey of source generator
PDF
twMVC#38 How we migrate tfs to git(using azure dev ops)
PDF
twMVC#36C#的美麗與哀愁
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC#50 微服務上線後的救贖
twMVC 47_Elastic APM 的兩三事
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
.NET 7 家族新成員: Microsoft Orleans v7
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 YARP
twMVC#43 C#10 新功能介紹
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Windows容器導入由0到1
twMVC#42 讓我們用一種方式來開發吧
twMVC#41 hololens2 MR
twMVC#41 The journey of source generator
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#36C#的美麗與哀愁

twMVC#17 | 使用Angular.js開發大型系統架構