Riotjs の 2.0.8 がリリースされました。
バグフィックスが中心で細かい機能追加もある感じです。
個人的には以前の記事でも書いた <input type='text' />
がバグる問題が修正されたのが大きいです。
<sample>
<form>
<input type='text' />
<button>submit</button>
</form>
</sample>
コンパイルすると
riot.tag('sample', '<form> <input type=\'text\'> <button>submit</button> </form>', function(opts) {
});
以前は </form>
が2つ出るコンパイラだったんですが改善されました。バグフィックスでいうと if
の挙動やグローバルの変数(location
とか)がサポートされたりしました。
CLI では .tag
の拡張子しかコンパイルされなかったのですが --ext html
というようなオプションをつけることで任意の拡張子をコンパイルできるようになりました。どこで問題になるのかまだ分かってないんですけど、単純に引数で与えたファイルをコンパイルするんではダメなんですかねえ。
テンプレートの方では、JS 側の変数を埋め込むブラケット(<p>{ hoge }</p>
こういうやつ)を任意のものに書き換えることができるようになりました。
riot.settings.brackets ='{{ }}'
こういう風に設定を書いてやれば
<p>{{ hoge }}</p>
と書けるようになりました。全世界の Mastache ファンの皆さん待望(?)の機能かもしれないですね。僕は { }
の方がタイプ数が少なくて済むのでデフォルトをそのまま使い続けるとおもいます。
というわけで、バグも直ったし改めておすすめです。拙作の gulp プラグインのgulp-riotも既に追従していますので併せてどうぞ。
追記(2015/02/12)
issue に上げてある (https://github.com/muut/riotjs/issues/338) んですが、update
関数で値を書き換えたときに子コンポーネントへ値が渡るタイミングが遅延するバグが含まってました。html で <p>{ data }</p>
のような感じで埋めてる場合は遅延せず更新が反映されるのですが、.on 'update'
でなんか処理したりとか、<ul each='{ data }'>
のようにループさせたりする処理が遅延します。時間をみつけてコード読んでみてるんですが、どこが原因なのかまだ分かってないです。コンパイラ的な意味では 2.0.8
がいいんですが、ランタイムは 2.0.7
のままの方がよさげです。