22
Riot.jsと戦った話 片山真也 フロントエンドエンジニア

Riot.js と戦った話 (8月26日 oRo LT 会)

Embed Size (px)

Citation preview

Page 1: Riot.js と戦った話 (8月26日 oRo LT 会)

Riot.jsと戦った話片山真也 フロントエンドエンジニア

Page 2: Riot.js と戦った話 (8月26日 oRo LT 会)
Page 3: Riot.js と戦った話 (8月26日 oRo LT 会)
Page 4: Riot.js と戦った話 (8月26日 oRo LT 会)

React

Page 5: Riot.js と戦った話 (8月26日 oRo LT 会)

Riot.js

Page 6: Riot.js と戦った話 (8月26日 oRo LT 会)

<ul>

<li each=“{ item, i in list }”>{ item.text }</li>

</ul>

Page 7: Riot.js と戦った話 (8月26日 oRo LT 会)

<input type=“text” value=“{ text }”

onchange=“{ onChangeInput }”>

Page 8: Riot.js と戦った話 (8月26日 oRo LT 会)

<div class=“item { selected: selected == item }”

each=“{ item in list }”>

{ item.text }

</div>

シンタックスの数が少なく、 短い学習ですぐに書ける

Page 9: Riot.js と戦った話 (8月26日 oRo LT 会)
Page 10: Riot.js と戦った話 (8月26日 oRo LT 会)

React-like とつくからには Flux っぽく書きたい

Page 11: Riot.js と戦った話 (8月26日 oRo LT 会)

Riot.jsCustom tags (View + Action)

<modal> <accordion> <profile>

EJS

RiotControlDispatcher

ModalStore AccordionStore ProfileStoreStore

WebPack

業務ではこんな感じの構成で使ってるけど、 双方向にデータが流れてるから Flux のような何か

Page 12: Riot.js と戦った話 (8月26日 oRo LT 会)

RiotControl はたったの 17 行のライブラリ

Page 13: Riot.js と戦った話 (8月26日 oRo LT 会)

RiotControl.on(‘updateMessage’, (messages) => {

this.messages = messages;

this.update();

});

Dispatcher として使える

Page 14: Riot.js と戦った話 (8月26日 oRo LT 会)

他の実装だと riot-todo が Flux を実現しつつ、 簡略なコードで良い感じ

Page 15: Riot.js と戦った話 (8月26日 oRo LT 会)

Riot.js バグが割と多い

Page 16: Riot.js と戦った話 (8月26日 oRo LT 会)

業務で使っている時も結構地雷踏みました

Page 17: Riot.js と戦った話 (8月26日 oRo LT 会)

何度もバージョンを変えつつバグを避けたり

Page 18: Riot.js と戦った話 (8月26日 oRo LT 会)

RiotControl も実装が簡単すぎるので、 使い方を気をつけないと意図しない動作が

Page 19: Riot.js と戦った話 (8月26日 oRo LT 会)

each={ item, index in list } のバグ

インデックスが一文字に (index -> x)

ネストしてると値がおかしくなる

each をネストさせると riot.js 内部エラー

変数を省略すると update されない

each 内のカスタムタグが取得できない

etc…最新版では直ってる (はず)

Page 20: Riot.js と戦った話 (8月26日 oRo LT 会)
Page 21: Riot.js と戦った話 (8月26日 oRo LT 会)
Page 22: Riot.js と戦った話 (8月26日 oRo LT 会)

Riot.js 2.2.4 は (たぶん) 安定してるので、 2.2.4 を使いましょう