Jemplate雑感。

| コメント(0) | トラックバック(0)



Jemplate、とりあえず使ってみた。


俺がMasonを使うのは俺がプログラマーだからなんだなぁ、というのがまず最初の感想。なんでかというと、Jemplateがでてきた時、まず真っ先にTTへの反動があり、Mason使いたい!と思って、実装をMasonに変えてみれないかと考えてたからである。


ところがところが。Masonはとてもよくできたコードなのだけどロジックとプレゼンテーションの分離というとちょっと目指すものが違っており、TTのようにスムーズなパーサーがないし、Perlコードが結構そのまま入るのでそれをJavascriptに変換するというのも無理があった。


俺はどうも



sub action {
my %data = ...;
$template->process(%data);
}

みたいなパターンが嫌いで、どうせならロジックはページそのものに埋め込みたい。Masonで言う所の<init>ブロックがとても気に入ってるのはそのせい。どうもひとつの動作を具現化するのに二つのファイルをいじるという事に納得できないのだなぁ。


まぁなにはともあれ。


そういう事を踏まえて、そうか、これは表示側を作成する人のためのツールなんだ、と理解できた瞬間にJemplateはすっと納得できた。これはこれでいいんじゃなかろうか。TTを使えるコーダーの人に渡したら便利そうだよなぁ。


ちなみに試したみたのはこれだけなんだけどね。妙にこのエレガントさに納得してしまった:



test.tt:
my name is [% poop %]

jemplate -c test.tt
(snip)

Jemplate.templateMap['test.tt'] = function(context) {
if (! context) throw('Jemplate function called without context\n');
var stash = context.stash;
var output = '';

try {
output += 'my name is ';
//line 1 "test.tt"
output += stash.get('a');
}
catch(e) {
var error = context.set_error(e, output);
throw(error);
}

return output;
}


Author

Daisuke Maki (a.k.a lestrrat): Perl hacker, Director of Japan Perl Association, YAPC::Asia Tokyo Organizer (2009-2012), Fluent in Japanese, English. Ex-Brazilian (sorta)

#perl #c #ruby #java #mysql #english #japanese #opensource #stf #cooking #scotch #cigar


このエントリーをはてなブックマ
ークに追加

翔泳社よりモダンPerl入門(2010)を出版させていただいております。できれば内容をアップデートしたいので是非皆様・・・現在の在庫処理にお力をお貸しください!><

月別アーカイブ