Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ԾDOMςϯϓϨʔςΟϯά֓೦ͰੈքΛม͑Δͧʂ @mizchi
Slide 2
Slide 2 text
About — mizchi — JSͰSPA࡞Δਓ — ΰάϚδΦεͨ͠
Slide 3
Slide 3 text
స৬͠·ͨ͠
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
ԾDOMͷ
Slide 6
Slide 6 text
ϖʔδϟφΠτʹͯ — աڈͷࢿྉ: ͓લࣗͪͷϖʔδϟUI͕ຊʹ͍ͱࢥͬ ͯΜͷʁ // Speaker Deck — ཁ — σʔλόΠϯυͰjQueryͷૢ࡞ආ͚ͯཧίετԼ͛ͨ ͔ͬͨ
Slide 7
Slide 7 text
ࠓճͷϨΠϠʔ HTMLจࣈྻ => ߏங ͕͍
Slide 8
Slide 8 text
ຊΞτϛοΫૢ࡞͍ͨ͠ — ৗʹಉ͡ೖྗ(JSON)͔Βಉ͡ग़ྗ(DOM)Λ͍ͨ͠ — ଐੑॻ͖͑ͯθϩ͔Βશ෦ߏங͍ͨ͠
Slide 9
Slide 9 text
ͭ·ΓͲ͏͍͏͜ͱ͔ //Ͳ͔͜ͰݺΕΔϋϯυϥ var count = 0; function onClick(){count++; update()}; //ΫϦοΫͷʹຖճݺͼ͍ͨʂʂʂ function update(){ document.body.innerHTML = ''; var html = renderHTML({count: count}); document.body.innerHTML = html; }
Slide 10
Slide 10 text
ϠόΠ ϖʔδભҠ૬
Slide 11
Slide 11 text
ԾDOMͱ — ≠ ϥΠϒϥϦ — ৽͍͠ϑϩϯτΤϯυʮ֓೦ʯ — facebook/react — Matt-Esch/virtual-dom
Slide 12
Slide 12 text
༻ޠཧ
Slide 13
Slide 13 text
HTML จॻߏΛࣔ͢ʮจࣈྻʯ ※௨ৗͷςϯϓϨʔτΤϯδϯͷλʔήοτ
Slide 14
Slide 14 text
DOM HTML͔Βੜ͞ΕΔϒϥβ্ͷʮΠϯελϯεʯ
Slide 15
Slide 15 text
ԾDOM DOMͱҰରҰʹରԠ͢Δߏମ(͋ͱͰৄ͘͠)
Slide 16
Slide 16 text
ԾDOMͷ֓೦ 1. ϢʔβৗʹʮԾͷʯDOMͷߏΛϓογϡ 2. ϥΠϒϥϦ͕લޙͷԾDOMͷdiffΛ࡞Δ 3. diff͔ΒʮຊͷʯDOMɺߏͷૢ࡞Λpatch͢Δ
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
ୡ͞ΕΔ͜ͱ — patchॲཧͳͷͰര — DOMΛલʹ͢Εdiffίετ(΄΅)ແࢹͰ͖Δ
Slide 19
Slide 19 text
ςϯϓϨʔτΤϯδϯͷݶք — ԾDOM ≠ HTMLςϯϓϨʔτ — จࣈྻΛܦ༝͢ΔͱΠϕϯτϋϯυϥΛͤͳ͍
Slide 20
Slide 20 text
facebook/reactͷΞϓϩʔν — JSXͱ͔͍͏HTMLຒΊࠐΈ֦ுݴޠ var div = React.DOM.div; var app =
Hello, React!
; (E4X…͍ɺͳΜͰͳ͍)
Slide 21
Slide 21 text
JSXΘͳ͍Ξϓϩʔν — ֤छAltJSϓϦίϯύΠϥͱ૬ੑ࠷ѱ(ύʔα௨Βͳ͍) — Πϯελϯεʹ৮ΔͨΊʹݴޠDSLͰԾDOMੜ͍ͨ͠
Slide 22
Slide 22 text
ݴޠDSLͰԾDOM……?
Slide 23
Slide 23 text
=> ςϯϓϨʔτΤϯδϯ ͩʂʂʂʂ
Slide 24
Slide 24 text
ྫ: react-kup(CoffeeScript) ReactKup ($) -> $.ul {className: 'container'}, -> for i in [1..10] $.li {key: i}, "index:"+i
Slide 25
Slide 25 text
ྫ: Om(ClojureScript) (defn widget [data owner] (reify om/IRender (render [this] (dom/h1 nil (:text data))))) Sࣜ
Slide 26
Slide 26 text
ྫ: elm-html(elm) yogi : Html yogi = img [ src "http://elm-lang.org/yogi.jpg" , style [ prop "width" "100%" , prop "height" "100%" ] ] [] ※ virtual-domόοΫΤϯυ
Slide 27
Slide 27 text
— աʹϓϩάϥϚϒϧ — ίʔυಡΊͳ͍σβΠφͳΜ͍ͯͳ͔ͬͨΜͩʂ
Slide 28
Slide 28 text
ී௨ͷςϯϓϨʔτΤϯδϯ(HTML)Λ͍·ΘͤΔʁ — طͷͷͩͱ react-jade(jade) ͋Δ༷ — HTML to Virtual DOM ม͋Δ — reactjs/react-magic
Slide 29
Slide 29 text
طଘͷʮςϯϓϨʔτΤϯδϯʯͷ֓೦্ͷ — จࣈྻܦ༝͢ΔͱΠϕϯτϋϯυϥ͕ѻ͑ͳ͍ — ࠷దԽʹkeyଐੑ͕ඞཁ(diffΞϧΰϦζϜʹର͢ΔϢχʔΫ ωεอূ)
Slide 30
Slide 30 text
ݴ͍͔ͨͬͨ͜ͱ — ԾDOMύϥμΠϜνΣϯδ — ·ͩύʔπ͕Γͳ͍ — ͦ͏͍͑ʮJavaScriptΤϯδχΞཆಡຊʯങͬͯͩ͘ ͍͞
Slide 31
Slide 31 text
ͬͯΈͨ mizchi/my-feed-reader
Slide 32
Slide 32 text
No content
Slide 33
Slide 33 text
— 2ͰRSSϦʔμʔ࡞Εͨ — ͳ͓࡞Δඞཁͳ͔༷ͬͨ
Slide 34
Slide 34 text
͓ΘΓ