5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Riot@2.0.8 雑感

Last updated at Posted at 2015-02-10

Riotjs の 2.0.8 がリリースされました。

バグフィックスが中心で細かい機能追加もある感じです。

個人的には以前の記事でも書いた <input type='text' /> がバグる問題が修正されたのが大きいです。

test.tag
<sample>
  <form>
    <input type='text' />
    <button>submit</button>
  </form>
</sample>

コンパイルすると

tag.js
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 のままの方がよさげです。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?