使用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 Provider Controller Config •決定角色 •撰寫劇本 •交給導演
單向繫結 One Way Binding Model + Template View
雙向繫結 Two Way Binding Model + Template View 追蹤更新
把複雜的語法打包
好找的程式碼
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功能快 速實現
Demo • 使用WebApi建立Blog的Api • 快速實現CRUD
小結  內建常用功能  許多現成套件  簡單易用 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 總結
選擇Angular.js的理由  關注點分離(SoC)  架構設計良好(SOLID)  程式碼好維護  社群活動踴躍  相容性極佳 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
謝謝各位 h t t p : / / m v c . t w • 本投影片所包含的商標與文字皆屬原著作者所有。 • 本投影片使用的圖片皆從網路搜尋。 • 本著作係採用姓名標示-非商業性-相同方式分享3.0 台灣授權。閱讀本授權條款,請到 http://creativecommons.org/licenses/by-nc-sa/3.0/tw/,或寫信至Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.

Angular js twmvc#17