0
Riot.jsに触れてみた話
エスキュービズム・テクノロジー
エンジニア勉強会
July 24,2015
S-cubism Technology Inc.
1
JavaScriptのフレームワー
クっていっぱいありますよね。
2
主要なもの
※jQueryはフレームワークじゃねぇ!ってツッコミはおいといてください。
3
どれを選ぼうか…
4
Riot.jsはどうですか?
5
A REACT- LIKE, 2.5KB USER INTERFACE LIBRARY
React.jsを意識して作られた超軽量なUIライブラリ
Riot.jsとは
https://muut.com/riotjs/ より
6
Why Riot?
And why we need a new UI library
https://muut.com/riotjs/ より
7
1. Custom tags
2. Simple and minimalistic
Why Riot?
And why we need a new UI library
https://muut.com/riotjs/ より
8
1. Custom tags
9
独自タグ(コンポーネント)
基本的には、独自タグ(コンポーネント)を作成していく形となります。
例では「app」「test」。
本来は.tagで登録しますが、シンタックスカラーが効かないため.htmlに。
10
コード例(コンパイル前)
https://muut.com/riotjs/ より
11
コンパイルすると
12
コード例(コンパイル
後)
http://muut.github.io/riotjs/demo/ より
13
2. Simple and minimalistic
14
そんなに軽いの?
15
軽いです。
16
比較①
ライブラリ / フレームワーク サイズ
Riot.js 6.7KB
jQuery 94KB
※ver1.11.3
Angular.js 145KB
※メインjsファイルのサイズ
React.js 122KB
17
比較②
https://muut.com/riotjs/guide/ より
React.jsのtodo Riot.jsのtodo
18
比較②
https://muut.com/riotjs/guide/ より
React.jsのtodo Riot.jsのtodo
24倍から128倍の差!(…らしい。)
19
仕様について
20
ルール(抜粋)
・Riot.jsはHTMLタグ(レイアウト)とJavaScript(ロジック)の組み合わせ
・JavaScriptは、まずHTMLが定義されていて、かつscript内に記述する
※外部タグファイルを読み込む場合、bodyタグ内で読み込まないと使用できない。
・scriptタグを除くhtmlタグの終了位置がJavaScriptの開始。
・クラス名は省略して記述できる。
例) class={ completed: done } ⇒ class="completed"
・全ての属性名は小文字でなければならない。(ブラウザの仕様)
・独自タグは必ず閉じる必要がある。
・式の値がfalseなら属性は無視。
例) <input checked={ undefined }> ⇒ <input>
https://muut.com/riotjs/guide/ より
21
書き方について
22
HTML
メインとなるindex.html。
ここで各コンポーネントファイルとコンパイラを読み込む。
23
コンパイラ
上: コンパイル済みの特別なファイルを読み込む
下: ブラウザ上でトランスコンパイル
24
マウント
「todo」と言う独自タグに
'Hello Riot!'という文言を
「heading」と言うキーで
マウントする。
全ての独自タグをマウントする。
困ったらこう書くw
25
変数 opts
タグの属性としてセットした値やマウントされた値は、opts変数からアクセス可。
例では「title」。
26
式
式はHTMLと混合して記述できる、かつ100%JavaScript。
27
繰り返し処理
タグの属性としてセットした値は、opts変数からアクセスできます。例では「title」。
28
条件文
使い方としては、
・style="display: "(無視される)
・style="display: none"
・真偽値のセット or 削除
など。
29
…etc
詳しくは公式ページより!
30
DEMO
31
・https://muut.com/riotjs/
・http://qiita.com/cognitom/items/fb1295f3f93911e9e92d
・http://qiita.com/cognitom/items/54ae38c9a50dbbe28367
・http://qiita.com/kazusa-qooq/items/66047d74596ddb494df9
・http://qiita.com/cognitom/items/8010e0779950df574cc9
参考URL
32
ありがとうございました

Riot.jsに触れてみた話