SlideShare a Scribd company logo
1 of 22
Download to read offline
Riot.jsと戦った話
片山真也 フロントエンドエンジニア
React
Riot.js
<ul>
<li each=“{ item, i in list }”>{ item.text }</li>
</ul>
<input type=“text” value=“{ text }”
onchange=“{ onChangeInput }”>
<div class=“item { selected: selected == item }”
each=“{ item in list }”>
{ item.text }
</div>
シンタックスの数が少なく、
短い学習ですぐに書ける
React-like とつくからには Flux っぽく書きたい
Riot.js

Custom tags
(View + Action)
<modal> <accordion> <profile>
EJS
RiotControlDispatcher
ModalStore AccordionStore ProfileStoreStore
WebPack
業務ではこんな感じの構成で使ってるけど、
双方向にデータが流れてるから Flux のような何か
RiotControl はたったの 17 行のライブラリ
RiotControl.on(‘updateMessage’, (messages) => {
this.messages = messages;
this.update();
});
Dispatcher として使える
他の実装だと riot-todo が Flux を実現しつつ、
簡略なコードで良い感じ
Riot.js バグが割と多い
業務で使っている時も結構地雷踏みました
何度もバージョンを変えつつバグを避けたり
RiotControl も実装が簡単すぎるので、
使い方を気をつけないと意図しない動作が
each={ item, index in list } のバグ
インデックスが一文字に (index -> x)
ネストしてると値がおかしくなる
each をネストさせると riot.js 内部エラー
変数を省略すると update されない
each 内のカスタムタグが取得できない
etc…
最新版では直ってる (はず)
Riot.js 2.2.4 は (たぶん) 安定してるので、
2.2.4 を使いましょう

More Related Content

What's hot

Wpfと非同期
Wpfと非同期Wpfと非同期
Wpfと非同期
yone64
 
後期第三回ネットワークチーム講座資料
後期第三回ネットワークチーム講座資料後期第三回ネットワークチーム講座資料
後期第三回ネットワークチーム講座資料
densan_teacher
 

What's hot (10)

Google Gears データベースの基礎
Google Gears データベースの基礎Google Gears データベースの基礎
Google Gears データベースの基礎
 
Wpfと非同期
Wpfと非同期Wpfと非同期
Wpfと非同期
 
Lt 111217
Lt 111217Lt 111217
Lt 111217
 
Sencha ug3 siesta_share
Sencha ug3 siesta_shareSencha ug3 siesta_share
Sencha ug3 siesta_share
 
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハックjQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
jQuery Validation x ASP.NET MVC で遭遇した不具合 & 対抗ハック
 
【YAPC::Asia Hachioji 2016】ES2015のclassでアプリケーションを書いてみた話
【YAPC::Asia Hachioji 2016】ES2015のclassでアプリケーションを書いてみた話【YAPC::Asia Hachioji 2016】ES2015のclassでアプリケーションを書いてみた話
【YAPC::Asia Hachioji 2016】ES2015のclassでアプリケーションを書いてみた話
 
これからのJavaScriptー関数型プログラミングとECMAScript6
これからのJavaScriptー関数型プログラミングとECMAScript6これからのJavaScriptー関数型プログラミングとECMAScript6
これからのJavaScriptー関数型プログラミングとECMAScript6
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
System2
System2System2
System2
 
後期第三回ネットワークチーム講座資料
後期第三回ネットワークチーム講座資料後期第三回ネットワークチーム講座資料
後期第三回ネットワークチーム講座資料
 

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

実践 Reactive Extensions
実践 Reactive Extensions実践 Reactive Extensions
実践 Reactive Extensions
Shin Ise
 
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applications
totty jp
 
Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19
Hideki Hashizume
 

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

jQuery超入門編
jQuery超入門編jQuery超入門編
jQuery超入門編
 
Ajax 応用
Ajax 応用Ajax 応用
Ajax 応用
 
実践 Reactive Extensions
実践 Reactive Extensions実践 Reactive Extensions
実践 Reactive Extensions
 
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applications
 
学生向けAndroid勉強会(入門編)
学生向けAndroid勉強会(入門編)学生向けAndroid勉強会(入門編)
学生向けAndroid勉強会(入門編)
 
Visualforce + jQuery
Visualforce + jQueryVisualforce + jQuery
Visualforce + jQuery
 
Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19Pro aspnetmvc3framework chap19
Pro aspnetmvc3framework chap19
 
第3回Webkit/HTML5勉強会 - File APIと加速度センサー
第3回Webkit/HTML5勉強会 - File APIと加速度センサー第3回Webkit/HTML5勉強会 - File APIと加速度センサー
第3回Webkit/HTML5勉強会 - File APIと加速度センサー
 
Lt 111119
Lt 111119Lt 111119
Lt 111119
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについて
 
春のJs祭り2015 lt
春のJs祭り2015 lt春のJs祭り2015 lt
春のJs祭り2015 lt
 
やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介
 
ApexトリガのBest Practiceを目指して
ApexトリガのBest Practiceを目指してApexトリガのBest Practiceを目指して
ApexトリガのBest Practiceを目指して
 
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java
 
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsC#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
 
Entity Framework 5.0 deep dive
Entity Framework 5.0 deep diveEntity Framework 5.0 deep dive
Entity Framework 5.0 deep dive
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
 
jqで極めるシェル芸の話
jqで極めるシェル芸の話jqで極めるシェル芸の話
jqで極めるシェル芸の話
 
Reactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単にReactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単に
 

More from kata shin (7)

アニメーションの実装つらい話
アニメーションの実装つらい話アニメーションの実装つらい話
アニメーションの実装つらい話
 
6月26日 LT会
6月26日 LT会6月26日 LT会
6月26日 LT会
 
JSSST 2014 発表資料
JSSST 2014 発表資料JSSST 2014 発表資料
JSSST 2014 発表資料
 
Generational Layered Canvas Mechanism for Collaborative Web Applications
Generational Layered Canvas Mechanism for Collaborative Web ApplicationsGenerational Layered Canvas Mechanism for Collaborative Web Applications
Generational Layered Canvas Mechanism for Collaborative Web Applications
 
新谷研プログラミングコンテスト2014 発表資料
新谷研プログラミングコンテスト2014 発表資料新谷研プログラミングコンテスト2014 発表資料
新谷研プログラミングコンテスト2014 発表資料
 
JSAI2014 発表資料
JSAI2014 発表資料JSAI2014 発表資料
JSAI2014 発表資料
 
新谷・大囿研究室 2014年度引き継ぎ講習会 フレームワーク
新谷・大囿研究室 2014年度引き継ぎ講習会 フレームワーク新谷・大囿研究室 2014年度引き継ぎ講習会 フレームワーク
新谷・大囿研究室 2014年度引き継ぎ講習会 フレームワーク
 

Recently uploaded

Recently uploaded (12)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

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