BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース レンダリングシステムを刷新したMeteor 0.8

レンダリングシステムを刷新したMeteor 0.8

原文(投稿日:2014/04/08)へのリンク

Meteorのバージョン0.8が公開された。“Meteorのレンダリングシステムが改善されている”という。

Meteorの次世代テンプレートエンジンであるBlazeは細かなDOMの更新が可能であり、jQueryと統合され、APIが単純になった。今回のリリースで2012年のバージョン0.4導入されたページ更新エンジンであるSparkがBlazeに置き換わった。

MeteorのブログでMatt Debergalis氏がBlazeについて“開発者フレンドリ”であり、設計上でもSparkより“いくつかの点”で優れている、と評している。

Blazeはふたつの部分でできている。ひとつは、テンプレートをJavaScriptのコードに変換するビルドタイムコンパイラだ。HandlebarsスタイルのコンパイラであるSpacebarsはHTMLのテンプレートを即時に更新されるDOMの要素に変換する。したがって、ユーザは普通のHTMLのテンプレートとヘルパを書けばいい。

“ユーザがデータを変更したり、テンプレートが依存する新しいデータがネットワークから来たりしたとき、Blazeが自動的に画面を更新します”。“依存関係を宣言したり、更新を制御するコードを書いたりする必要”はない、とDebergalis氏はブログに書いている

Blazeのふたつ目の部分は“要素を描画したり、依存関係を追跡したり、変化に従って依存関係の更新を行う”ランタイムAPIだ。

SparkのAPIの置き換えに伴い、Meteor.renderがなくなり、新しいパターンをカスタムブロックヘルパを定義するための新しいパターンが導入された。追加されたAPIと利用非推奨になったAPIにはUI.bodyが含まれている。UI.bodyはBODY要素全体と対応するテンプレートだ。

Spacebarsパーサーを使えば“以前はできなかった”処理ができる。例えば、

  • HTMLのリアクティブな更新。テンプレートパーサはHTMLタグをパースし、細かい単位でリアクティブな更新ができる。DOMの要素を属性のレベルで更新できる。
  • プリコンパイル。Spacebarsコンパイラはシンプルな手続きがたのコードを生成する。生成されたコードは内部のMeteorインターフェースを呼び出す。このインターフェースは将来は、クライアントサイドのレンダリングでもサーバサイドのレンダリングでも利用される。テンプレートを解釈したりHTMLのアウトプットをパースするよりも効率的だ。
  • 構文拡張。Handlebarsのシンタックスは極端に小さい。これは、厳選された拡張が追加されるのを見越しているからだ(現時点ではMeteorにない、現時点のHandlebarsの重要な機能を実装している。例えばオブジェクトをサポートし現在のインデックスやキーにアクセスできる#each。)

Meteor 0.8ではHandlebars名前空間が非推奨になった。Handlebars.SafeStringはSpacebars.SafeStringに、Handlebars.registerHelperはUI.registerHelperになった。

Spacebarsを使うにはHTMLは“きちんと整形”されていなければならない。githubのUsing Blazeというページには、“SparkではHTMLのパースはHTMLの書き方に寛容なブラウザが行っていました。”と書いてある。

加えて、BlazeのHTMLパーサーは現時点ではHTMLの仕様を完全に満たしていない。リリースノートには<p>や<li>のような特定のタグは自動的に閉じない、と書いてある。

0.8のリリースはMeteorのコミュニティに大いに歓迎された。LinkedInのMeteorグループでは、ユーザであるUト殷r Toprakdeviren氏がディスカッションを始めている。お題は“Meteor 0.8.0(Blaze、Spacebarsなど)についてどう思うか”

Ongo WorksのファウンダでありCTOであるAaron Singmaster-Judd氏は“素晴らしく良くできていて、Meteorのチームや新しいコードベースを活用したコミュニティの開発者たちはほんとうによくやったと思います“と答えている。

“既存のパッケージを更新するのは大変かもしれません。ウェブ上の情報もかなりは無効になってしまいます。しかし、更新する価値はあります。”

Hacker Newsでも今回のバージョンアップは好意的に受け止められている。elsherbini氏はjQuery統合について“とても素晴らしい!”とコメントしている。ほかのユーザもBlazeのリリースについて好意的に反応している。TylerE氏はコンパイラについて“とても興奮しています。jadeテンプレートを使うのも工夫は必要なさそうですね。これは少なくとも私にとっては大きなことです。”とコメントしている。

Debergalis氏によれば、テンプレートエンジンだけが0.8の新しい機能であり、Meteor 1.0リリースに向けての大きな1歩だ。

この記事に星をつける

おすすめ度
スタイル

BT