25
流流流流 @JSDC 2013 ROCK WITH KNOCKOUT.JS

Rock with knockout

  • Upload
    -

  • View
    1.340

  • Download
    2

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Rock with knockout

流浪小風 @JSDC 2013

ROCK WITH KNOCKOUT.JS

Page 2: Rock with knockout

WHO AM I?

• 流浪小風 (Facebook 陳小風)

• 91mai 就要買 行動商城• C#, Asp.net, Javascript, TypeScript - http://

www.dotblogs.com.tw/kirkchen

• Continuous Integration, BDD

• 使用 Jenkins 打造 .Net CI Server - http://goo.gl/D1lkK

Page 3: Rock with knockout

那些年,我們寫過的 CODE…

Page 4: Rock with knockout

開發系統常見的需求

• 日期選擇器• 格式化數字 • 選擇顏色

• More…

Page 5: Rock with knockout

動手開發

Page 6: Rock with knockout

需求異動來了…• 我想要增加兩個日期欄位 , 兩個價格欄位 • 我想要改版型• 我想要打十個批次輸入• 我想要…

Page 7: Rock with knockout

改變的時刻…

Page 8: Rock with knockout

我們需要 KNOCKOUT….

Page 9: Rock with knockout

MVVM PATTERN

View ViewModel

JSON

WebService

Value Changed

Event Triggerd

Data Updated

Page 10: Rock with knockout

HTML 和 JAVASCRIPT 分離

ViewModel

View

Page 11: Rock with knockout

DEMO• Binding View And ViewModel

• Knockout.js Documention http://knockoutjs.com/documentation/introduction.html

Page 12: Rock with knockout

WHY KNOCKOUT.JS• Html 和 JavaScript 分離,透過 Binding 繫結• 設計人員和開發人員可同時進行• 獨立 , 可與其他函示庫相容• 程式碼易於測試• 客製化屬於自己的 Binding

Page 13: Rock with knockout

神奇的 KNOCKOUT.JS

Page 14: Rock with knockout

TWO WAY DATABINDING• Assign ko.observable()

• 一處變動 , 連動所有相同的地方

Page 15: Rock with knockout

DEMO• Input form and preview by observable

Page 16: Rock with knockout

COMPUTED FIELD• 自動偵測相關欄位的變動 , 及時產生新值• 適合用於特殊顯示格式 , 組合字串…等等• 黑暗執行緒 – 使用 ko.computed 實現資料檢核

http://webcache.googleusercontent.com/search?q=cache:http://blog.darkthread.net/post-2012-09-27-kolab17.aspx

Page 17: Rock with knockout

DEMO• ko.computed

Page 18: Rock with knockout

CUSTOM BINDING• 根據自己的需求進行擴充• 客製化控制項• 重用性高 !

Page 19: Rock with knockout

DEMO• Create kendo numeric input binding

Page 20: Rock with knockout

TEMPLATE• 產品展示清單• 列表模式及圖示模式• 透過 Template 動態切換樣

Page 21: Rock with knockout

DEMO• Use template dynamic change layout

Page 22: Rock with knockout

結論• 關注點分離 (Separation of concerns) 的精神• 發揮你的想像力• 沒有最好的 Framework ,只有最適合你的 Framework

Page 23: Rock with knockout

USEFUL KNOCKOUT PLUGINS• Knockout Mapping

http://knockoutjs.com/documentation/plugins-mapping.html

• Knockout Validationhttps://github.com/Knockout-Contrib/Knockout-Validation

• Knockout Postboxhttps://github.com/rniemeyer/knockout-postbox/

• Knockout-Kendo.jshttp://rniemeyer.github.io/knockout-kendo/

Page 24: Rock with knockout

REFERENCD• Knockout.js - http://knockoutjs.com/

• 黑暗執行緒 Knokcout.js 入門系列 – http://blog.darkthread.net/post-2012-05-09-knockout-js-intro.aspx

• 小朱 ® 的技術隨手寫 - [Architecture] MVP, MVC, MVVM, 傻傻分不清楚 ~http://www.dotblogs.com.tw/regionbbs/archive/2011/09/29/compare.to.mvp.mvc.mvvm.aspx

Page 25: Rock with knockout

Thanks you!