Slide 1

Slide 1 text

KnockoutJS঺հ ࣾ಺Ͱ঺հ͖ͯͨ͠΍ͭ 2013/05/15 ͳ͕͵·ͪͻΖ

Slide 2

Slide 2 text

ͳ͕͵·ͪͻΖ • ˏonjiro_mohyahya • ΀Ζ͙Β· • ͍͖͞ΜFuelPHPɾɾɾ • js/Java/Ruby/CSS • Backbone.js͖͢ʔ

Slide 3

Slide 3 text

ࠓ೔ͷ͸ͳ͠

Slide 4

Slide 4 text

KnockoutJSʹ͍ͭͯ ௐ΂ͯΈͨΑ

Slide 5

Slide 5 text

• KnockoutJSͬͯ͜Μͳͷɻ • observable ͱ binding • ίʔυྔগͳΊ • ϚʔΫΞοϓͷมߋ͠΍ͦ͢͏

Slide 6

Slide 6 text

໨࣍ • KnockoutJSͱ͸ • KnockoutJS࢖͍ํ • ͰɺͲ͏Αʁ

Slide 7

Slide 7 text

໨࣍ • KnockoutJSͱ͸ • KnockoutJS࢖͍ํ • ͰɺͲ͏Αʁ

Slide 8

Slide 8 text

http://knockoutjs.com/

Slide 9

Slide 9 text

• jsͷϥΠϒϥϦ • ΫϥΠΞϯταΠυMV*ϑϨʔϜϫʔΫ • MVVM Patern

Slide 10

Slide 10 text

• jsͷϥΠϒϥϦ • ΫϥΠΞϯταΠυMV*ϑϨʔϜϫʔΫ • MVVM Patern

Slide 11

Slide 11 text

ΫϥΠΞϯταΠυ MV*ͷ͓͞Β͍

Slide 12

Slide 12 text

• ΫϥΠΞϯτଆjsίʔυͷෳࡶԽΛͳΜ ͱ͔͢Δٕज़ͷͻͱͭ • ೔ຊͰ͸Backbone.js͕༗໊

Slide 13

Slide 13 text

JavaScript

Slide 14

Slide 14 text

We love jQuery!!

Slide 15

Slide 15 text

But...

Slide 16

Slide 16 text

࠷ۙͷϦονͰෳࡶͳUIΛ jQuery͚ͩͰ࡞Δͱେม

Slide 17

Slide 17 text

jQueryͰͷ໰୊఺

Slide 18

Slide 18 text

Πϕϯτϋϯυϥͷத Ͱ৭ʑ΍ͬͪΌ͏

Slide 19

Slide 19 text

• DOM͔ΒσʔλऔΓग़͠ • AjaxͰαʔόʔͱσʔλͷ΍ΓͱΓ • දࣔͷߋ৽

Slide 20

Slide 20 text

ྫʣhttp://www.slideshare.net/slideshow/ embed_code/15645947?startSlide=19 ʢ56ຕ໨͘Β͍·Ͱʣ

Slide 21

Slide 21 text

• “ػೳ”ͱ”දࣔ”͕ҰମʹͳΓ͕ͪ • DOMʹػೳ͕ґଘ͕ͪ͠ • “දࣔ”͸มߋ͞Ε΍͍͢෦෼

Slide 22

Slide 22 text

ʔʼมߋʹऑ͍ :-p

Slide 23

Slide 23 text

ɾɾɾͱ͍͏Θ͚Ͱ

Slide 24

Slide 24 text

ΫϥΠΞϯταΠυMVC ϑϨʔϜϫʔΫͷ୆಄

Slide 25

Slide 25 text

”දࣔ”Λ”ػೳ”͔Β ෼཭͢Δ

Slide 26

Slide 26 text

• ػೳ͸Modelͷ੹຿ • දࣔ͸Viewͷ੹຿ • ػೳࣗମ͸ViewʹͳΔ΂͘ґଘ͠ͳ͍

Slide 27

Slide 27 text

• Observer PatternΛ࠾༻ • ModelͷมߋΛEventͰ఻͑Δ • View͕ModelΛ؂ࢹɺDOMΛॻ͖׵͑ ྫʣBackbone.jsͷ࡞ઓ

Slide 28

Slide 28 text

Model View HTML Server Backbone.EventΛ listen HTMLͷEventΛ listen

Slide 29

Slide 29 text

http://todomvc.com/

Slide 30

Slide 30 text

໨࣍ • KnockoutJSͱ͸ • KnockoutJS࢖͍ํ • ͰɺͲ͏Αʁ

Slide 31

Slide 31 text

࣮ࡍͷίʔυྫʢtodomvcͷجຊ෦෼͚ͩʣ http://onjiro.github.io/knockout-handson/public

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

• observable • binding

Slide 34

Slide 34 text

“observableͳViewModel”Λ “Viewʹbind”͢Δ

Slide 35

Slide 35 text

• Observer PatternΛ࠾༻ • View(html)←→ViewModelؒ͸ࣗಈ൓ө KnockoutJSͷ࡞ઓ

Slide 36

Slide 36 text

ViewModel HTML data-bindͰ੍ޚ ko.applyBinding ஋Λࣗಈతʹ൓ө eventϋϯυϥʔద༻ KnockoutJS ࣗಈදࣔɾߋ৽ ͜Μͳײ͔͡ͳʁ

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

3छྨͷobservable 3छྨͷbinding

Slide 40

Slide 40 text

3छྨͷobservable 3छྨͷbinding

Slide 41

Slide 41 text

• ko.observable • ko.computed • ko.observableArray

Slide 42

Slide 42 text

3छྨͷobservable 3छྨͷbinding

Slide 43

Slide 43 text

• ςΩετͱελΠϧ • ίϯτϩʔϧϑϩʔ • ϑΥʔϜؔ࿈

Slide 44

Slide 44 text

ͱ͜ΖͰ

Slide 45

Slide 45 text

Ajaxαϙʔτ͸ʁ

Slide 46

Slide 46 text

• AjaxपΓͷऔΓܾΊ͸ͳ͍ http://knockoutjs.com/documentation/json-data.html • JSONͱϞσϧؒͷม׵͸αϙʔτ ko.toJS/ko.toJSON • JSON.stringify΋ී௨ʹ࢖͑Δ

Slide 47

Slide 47 text

໨࣍ • KnockoutJSͱ͸ • KnockoutJS࢖͍ํ • ͰɺͲ͏Αʁ

Slide 48

Slide 48 text

• data-bind͕Ұݟ͖΋͍ • Backbone.jsΑΓίʔυྔݮΓͦ͏ • ݟ௨͠͸Α͍ɾɾɾ͔΋

Slide 49

Slide 49 text

data-bind͕ Ұݟ͖΋͍

Slide 50

Slide 50 text

• data-bindͷཛྷ • htmlͬͯviewͳΜ͡Όͳ͍ͷʁ • text, value͸͍͍͚Ͳ • click, submit, etc... • Ͳ͏ͳΜͩʁ

Slide 51

Slide 51 text

Backbone.jsΑΓ ίʔυྔগͳ͍

Slide 52

Slide 52 text

• ҎԼ͕ࣗಈͳͷ͕ޮ͍͍ͯΔ • ೖྗΛModelʹ൓ө • Modelͷߋ৽Λը໘ʹ൓ө • foreachͰͷల։

Slide 53

Slide 53 text

ݟ௨͠͸Αͦ͞͏

Slide 54

Slide 54 text

• html͸ݟ΍͍͢ • js ͳ͠Ͱ΋σβΠϯΘ͔Δ • େମͷಈ͖΋Θ͔Δɾɾɾ͔΋ • ϚʔΫΞοϓͷมߋ͠΍ͦ͢͏

Slide 55

Slide 55 text

ࠓͷݒ೦

Slide 56

Slide 56 text

• ಘҙύλʔϯΛ཭ΕͨࡍʹͲ͏ͩΖ ͏ʁ

Slide 57

Slide 57 text

• গ͠·ͱ΋ʹ࢖ͬͯΈͳ͍ͱͳΜͱ΋ ݴ͑ͳ͍ײ • Backbone.jsΑΓෳ਺ਓͷ։ൃ͸ ָɾɾɾ͔ͳ͊ɻɻɻ

Slide 58

Slide 58 text

·ͱΊ

Slide 59

Slide 59 text

• observableͱbinding • ίʔυྔগͳΊ • ϚʔΫΞοϓͷมߋ͠΍ͦ͢͏

Slide 60

Slide 60 text

• http://tnakamura.hatenablog.com/entry/20120213/knockout • http://www.slideshare.net/shibayan/knockout-11523371 • http://www.slideshare.net/hakuraipod/knockout-14911482 • http://www.adobe.com/jp/devnet/html5/articles/getting- started-with-knockoutjs.html • http://www.slideshare.net/tricknotes/introduction-for- browser-side-mvc ࢀߟ