32
Riot.js 河村 奨 @cognitom Librize 合同会社 / 下北沢オープンソースCafe + generator で始める 新しいデータバインディング

Riot + generator で始める新しいデータバインディング

Embed Size (px)

Citation preview

Page 1: Riot + generator で始める新しいデータバインディング

Riot.js河村 奨 @cognitom

Librize 合同会社 / 下北沢オープンソースCafe

+ generator で始める新しいデータバインディング

Page 2: Riot + generator で始める新しいデータバインディング

あ、いる w

Page 3: Riot + generator で始める新しいデータバインディング

Riot.js?

Page 4: Riot + generator で始める新しいデータバインディング

Riot.js• カスタムタグを実現する、コンパクト(3.5K)なライブラリ

• 2015年1月 v2.0.0 v1とは完全に別物なので、実質4ヶ月と若い

• 現在 GitHubでスターが6K比較 Angular 39K, React 22K, Polymer 10K, Vue 4K

• 2015年5月 v2.1.0リリース - mixinのサポートほか

Page 5: Riot + generator で始める新しいデータバインディング
Page 6: Riot + generator で始める新しいデータバインディング

どんなん?

Page 7: Riot + generator で始める新しいデータバインディング
Page 8: Riot + generator で始める新しいデータバインディング

短い

Page 9: Riot + generator で始める新しいデータバインディング

TAG file JScompile

<my-tag> <p>{ message }</p> <style>p { color:white }</style> <script>…</script> </my-tag>

riot.tag(‘my-tag’, ‘<p>{ message }</p>’, ‘p { color:white }’, function(opts) {…} )

Page 10: Riot + generator で始める新しいデータバインディング

もう少し詳しく

Page 11: Riot + generator で始める新しいデータバインディング

{ } に変数、配列は each で回せる

Page 12: Riot + generator で始める新しいデータバインディング

属性に関数を渡すと、イベントハンドラに

Page 13: Riot + generator で始める新しいデータバインディング

コンパイルしてHTMLに読み込む / riot.mount()でDOMに展開

Page 14: Riot + generator で始める新しいデータバインディング

Riot React

HTMLの中に、JavaScript JavaScriptの中に、HTML

Page 15: Riot + generator で始める新しいデータバインディング

良いところ• HTMLっぽい : デザイナと一緒に使える • コード短い = 覚えることが少ない • Browserify/WebPack/gulp 好きなツールで • ただのUI: フレームワークは好きに選んで! • ScopedCSS ← プルリクエスト送りました ;)

Page 16: Riot + generator で始める新しいデータバインディング

びみょー

• テストが甘い

• パーサが正規表現ってどうよ ><※ただし、サーバサイド用のコンパイラは今後どうにかできるかも

Page 17: Riot + generator で始める新しいデータバインディング

プルリクエスト お待ちしています

muut/riot

Page 18: Riot + generator で始める新しいデータバインディング

ここまでは、Riot.js自体の話

Page 19: Riot + generator で始める新しいデータバインディング

最近、試していること

Riot.js + generator でデータバインディング

Page 20: Riot + generator で始める新しいデータバインディング

< component opts=“ナニカ”>

“strings”

ふつうはこう。

Page 21: Riot + generator で始める新しいデータバインディング

< component opts=“ナニカ”>

{ object }

オブジェクトを渡してもいいよね。

Page 22: Riot + generator で始める新しいデータバインディング

< component opts=“ナニカ”>

new Promise(…)

非同期のデータも渡したくない?

Page 23: Riot + generator で始める新しいデータバインディング

< component opts=“ナニカ”>

function*() {…}

どうせなら、連続的に。

Page 24: Riot + generator で始める新しいデータバインディング

< component opts=“ナニカ”>

function*() {…}

new Promise(…)

{ object }いろいろ。

Page 25: Riot + generator で始める新しいデータバインディング

ライブラリにしてみた

Page 26: Riot + generator で始める新しいデータバインディング
Page 27: Riot + generator で始める新しいデータバインディング

「一揆」ikki

Page 28: Riot + generator で始める新しいデータバインディング

画面デモ…

Page 29: Riot + generator で始める新しいデータバインディング

component + generator

• コンポーネントは、今まで通り作ればOK ※ object/promise/generatorを気にする必要なし

• コンポーネント / コントローラは互いを参照せず → 疎結合

Page 30: Riot + generator で始める新しいデータバインディング

< component opts=“ナニカ”>

stream

.pipe(…)

.pipe(…)ゆくゆくは こうしたい。

Page 31: Riot + generator で始める新しいデータバインディング

プルリクエスト お待ちしています

cognitom/ikki

Page 32: Riot + generator で始める新しいデータバインディング

Thank you!