Riot.js 2.2 情報まとめ
とりあえず、気付いたものをメモしていきます。随時更新。
本家
- 公式ドキュメント(英語)
- 公式ドキュメント(日本語)
- GitHub リポジトリ
- From React to Riot 2.0 - 背景説明のブログ記事
- Gitter
- 公式フォーラム
- サンプル集(準備中)
開発情報
インストール
riot
はツールごとにリポジトリが分かれていません。
- ブラウザ用のライブラリ
- コンパイラ
- CLIツール
の3つが一緒くたになっています。各人のスタイルに合わせて、インストールしましょう。(追記・次のv2.3に向けて、サブモジュール化が進んでいます)
ライブラリとして
CDNから最新版。他のパターンはこちら。
- コンパイラなし:
https://cdn.jsdelivr.net/riot/2.2/riot.min.js
- コンパイラあり:
https://cdn.jsdelivr.net/g/riot@2.2(riot.min.js+compiler.min.js)
npm
経由で。Browserifyを使う場合など。
$ npm install --save riot
bower
経由で。
$ bower install --save riot
CLIツールとして
コマンドラインから、 riot
を使う場合は、グローバルにインストール。
$ npm install riot -g
使い方は次の通り。
# 同一フォルダ内にコンパイル
$ riot some.tag
# 他のフォルダにコンパイル
$ riot some.tag some_folder
# 他のフォルダにファイル名を指定してコンパイル
$ riot some.tag some_folder/some.js
# 特定フォルダ内のファイルをすべてコンパイル (個別に)
$ riot some/folder path/to/dist
# 特定フォルダ内のファイルをコンパイルしてひとつに結合
$ riot some/folder all-my-tags.js
コンパイル
ビルドツールで
- gulp-riot - gulpプラグイン
- grunt-riot - Gruntプラグイン
- riotjs-loader - WebPack用のモジュールローダ
APIで
var riot = require('riot');
var js = riot.compile(source_string);
Browserifyの場合
Browserifyのトランスフォームがあるので、これを使います。
こんな感じのJavaScriptのファイルがあったとして...
// src/app.js
var riot = require('riot');
require('./components/custom-form.tag');
require('./components/custom-list.tag');
riot.mount('custom-form', { opt1: 'aaa', opt2: 'bbb' });
riot.mount('custom-list', { opt1: 'ccc', opt2: 'ddd' });
gulp経由でBrowserifyを使う際の gulpfile
↓
// gulpfile.js
var gulp = require('gulp');
var browserify = require('browserify');
var riotify = require('riotify');
var source = require('vinyl-source-stream');
gulp.task('browserify', function(){
browserify({ entries: ['src/app.js'] })
.transform(riotify, { template: 'jade' }) // pass options if you need
.bundle()
.pipe(source('app.js'))
.pipe(gulp.dest('dist/'))
});
CoffeeScriptやJadeを使う場合は、riotify
にオプションを渡す必要があります。
- CoffeeScript:
{ type: 'coffeescript' }
- Jade:
{ template: 'jade' }
- 両方:
{ type: 'coffeescript', template: 'jade' }
あと、実際に使用する場合は、uglify
とsourcemaps
も必要になるはず。(上記のgulpfile
は説明のためにかなり単純化しているので)
テスト関連
ベンチマーク
裏を取ってないですが、こんな感じという投稿あり。
Mithril < Vue < Backbone = Riot < React << Angular < Ember
各種情報
サンプル
- Simple TODO - 本家のデモ
- TodoMVC - TodoMVCのRiot.js版。ソースはこちら
- Multi TODO
- Timer - タイマー
- Flux- like event controller for Riot - Todoとルーティングのデモ
- Multi- selector
- Riot.js Example Project - Todoアプリをgulpでビルドする例
- 絵文字検索 - デモサイト
- Markdown Editor - vue.jsのデモっぽいやつ
- Riot.jsで通貨コンバータを作る - Browserifyする例として
- Riot.jsでタグエディターのサンプルを作ってみた
そのほか、本家のREADMEの最後に掲載されるようになりました。
チュートリアル
- RiotJS Example - シンプルなタブの実装を例に、丁寧に紹介
- 無謀にもJavaScriptなしでやってみる! Riot.js入門 - HTML/CSSコーダー向け、Riot.js入門
Q & A
- Stack Overflow - まだ情報がない...
紹介記事
- Riot – Reactライクな軽量UIライブラリ - Moongift
- Riot.js 2.0 を触ってみた — まだReactで消耗しているの? - 深夜二時クオリティ...
- Riotjsのいいところ - jgsさんによる紹介
- Riot.js試してみた - mizchiさんによる辛口レビュー
- Riot.js ソースコード完全解説 - 全部コード読んで把握できる量でした。
- HTMLのタグ属性に配列やオブジェクトを指定する - Riotでタグに属性を渡す方法各種