Riot.jsと
フォームのデータバインディング
いまけい(@imakei_)
自己紹介
いまけい @imakei_
サイバーエージェントに2015年新卒入社
Riot.jsを使ってtakusutaのwebアプリを作る
昨年9月にエブリーに転職
主にAndroid, フロントエンドをやることが多いが、
最近はサーバーもちょろっと。
趣味:コーヒー
→ 最近、高円寺でコーヒー屋を始めました。
takusutaの話
takusutaの話
2017/01/31 サービス終了
DelishKitchenの話
昨年12月アプリリリース
1位
フードカテゴリ
無料ランキング
※12月末 時点
※全職種において、
絶賛エンジニア募集中
何話すか.
● Riotってどんな感じか、
● 初心者でもわかりやすく、
● フォームのデータバインディングを題材に、
導入
ダッシュボードをRiot.jsで作ってます。
● Riot.js
● オレオレFlux
● AtomicDesign
● MaterialDesignLite
なんで?
● なるべくフロントとバックエンドを切り分けたかった。
● 最小工数でちょっとでもリッチに。
● 後々改修することを前提に。
● 僕が一番早く書けるのがRiotだった。
導入:Flux
導入:AtomicDesign
導入:Material Design Lite
ここから本題
みなさん、<form>どうしてます?
どんなフォームが作りたい
● 即時でデータバインドしたい
● MDL使いたい
● Atomicデザインな<input>
○ <input>のタイプごとに違うコンポーネント
○ 再利用可能
● Fluxなデータフロー
界隈どんな感じ?
● AngularはngModel
● ReactはControlled Componentがスタンダード?
じゃRiotで書くと
要件なんだっけ?
要件
● 即時でデータバインドしたい
● MDL使いたい
● Atomicデザインな<input>
○ <input>のタイプごとに違うコンポーネント
○ 再利用可能
● Fluxなデータフロー
さっきのソースコード
パターン1
要件
● ❌ 即時でデータバインドしたい
● MDL使いたい
● Atomicデザインな<input>
○ ◯ <input>のタイプごとに違うコンポーネント
○ 再利用可能
● ❌ Fluxなデータフロー
パターン2
要件
● ◯ 即時でデータバインドしたい
● MDL使いたい
● Atomicデザインな<input>
○ ◯ <input>のタイプごとに違うコンポーネント
○ ❌ 再利用可能 → optsはプリミティブがいい。
● ❌ Fluxなデータフロー
パターン3
パターン3’
要件
● ◯ 即時でデータバインドしたい
● MDL使いたい
● Atomicデザインな<input>
○ ◯ <input>のタイプごとに違うコンポーネント
○ ◯ 再利用可能
● ◯ Fluxなデータフロー
結論
結論
● <input>ごとにコンポーネント分けましょう
● optsはプリミティブとonChange(onInput)のコールバック
● データの更新はコールバックの中でAction叩きましょう
今回発表分のソースコードはここにあります.
http://runstant.com/imakei/projects/36b64780

Riot.jsとフォームのデータバインディング