Upgrade to Pro — share decks privately, control downloads, hide ads and more …

picodomでVDOMの理解を深める

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for takanorip takanorip
January 25, 2018

 picodomでVDOMの理解を深める

Avatar for takanorip

takanorip

January 25, 2018

More Decks by takanorip

Other Decks in Technology

Transcript

  1. 自己紹介 • 大木 尊紀(オオキ タカノリ) / @takanorip • 株式会社スマートドライブ •

    フロントエンドエンジニア • React、Vue、Polymer、Web制作全般 • Polymer Japan 翻訳チーム • 「イヌでもわかる Web Components」
 好評配信中 • 輝夜月かわいい
  2. 構成とか • picodomの構成 • h.js:h()の定義 / 29行 • patch.js:patch()を定義 /

    206行 • (index.jsは↑2つのファイルをimportしてるだけ)
  3. h("div", {id: 'app'}, [ h("h1", {class: 'title'}, 'Title'), h("button", {

    onclick: () => {hoge: 'fuga'} }, "+"), 'some text' ]);
  4. { name: "div", props: { id: "app" }, children: [

    { name: "h1", props: { class : "title" }, children: ["Title"] }, { name: "button", props: { onclick: () => {hoge: 'fuga'} }, children: ["+"] }, "some text" ] }
  5. import { h, patch } from picodom /** @jsx h

    */ let node function render(view, withState) { patch(node, (node = view(withState))) } function view(state) { return ( <div> <h1>{state}</h1> <input autofocus type="text" value={state} oninput={e => render(view, e.target.value)} /> </div> ) } render(view, "Hello!")