無精で短気で傲慢なプログラマ

UNIX や web やプログラムの技術的なことを中心に。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

Perl の web アプリ作成手法 その2

Perl の web アプリ作成手法 のつづき。

時間をみつけて調べてみたが、HTML::Template も Template Toolkit
も気に入らない。

HTML::Template は低機能すぎる。ある意味、その割り切りっぷりは
評価できるが、それを踏まえたとしても細かな仕様に不満がある。
たとえば、TMPL_LOOP 中から上位の TMPL_VAR にアクセスできない、とか。
die_on_bad_params=0 にすればアクセスできるが、チェック機能がすべて
OFF になってしまうので、そんなことはしたくない。

Template Toolkit はもっと気に入らない。なぜテンプレートごときで
独自の文法を覚えなければならないのか。

web 開発環境で一番好きなのは「Java Servlet + JSP で MVC」なのだが、
同類のテンプレートエンジンが Perl にもないものか。

…と思って調べてみたら、やっぱりあった。HTML::Mason
でも、Apache にモジュールを組み込まなきゃいけないのは嫌だなぁ。
スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する
 

些細なことですが

die_on_bad_params ではなくて、global_vars ですね。

ところで、現状に不満なら自作という手もありますよ。
(嫌味ではなく。)
そういう自分も、HTML::Template を使っているくせに
「param() で与えられていない変数が template に書いてあっても
それをはじく機能が無い」ことが不満なので、
パッチでも書いてから人に言えという話ですが。

LoBex | URL | 2006-02-16(Thu)05:21 [編集]


HTML::MasonはCGIでもつかえるようです

http://search.cpan.org/~drolsky/HTML-Mason-1.32/lib/HTML/Mason/CGIHandler.pm
試してみたわけではないのですが^^;
あと Embperl (http://search.cpan.org/~grichter/Embperl-2.1.0/)というものもあるようです.

hio | URL | 2006-02-16(Thu)12:06 [編集]


> ところで、現状に不満なら自作という手もありますよ。
わたしの人生における優先順位付けにより、自作はしません。
できればパッチくらいは投げたいところですが、作者がとことん
頑固そうですね。ML を見ると、これまでたくさんの新機能の提案
に対して、
 I don't like this.
てな感じで片付けてます。まぁ頑固だからここまでシンプルさを
維持できているんでしょうが、HTML::Template の拡張だけで
 HTML::Template::Ex
 HTML::Template::Extension
 HTML::Template::Set
 HTML::Template::Expr
 HTML::Template::HTX
 HTML::Template::HashWrapper
 HTML::Template::Pro::Extension
と乱立しているのを見ると、果たしてこれがよい状況と言える
のかなぁと思います。

> 「param() で与えられていない変数が template に書いてあっても
> それをはじく機能が無い」
全く同感です。そして param() で指定した変数が template に書いて
ないとエラーなわけですが、それってどちらかといえば逆にすべき
じゃないかと思っています (両方エラーになるのが最も望ましいとは
思いますが)。

例えば、一般ユーザ向けのページ A と、管理用ページ B に何かを表示
する場合、オブジェクト生成は一箇所にまとめて、表示はページ A と B
それぞれで行いたいわけです。

しかしオブジェクトに管理用ページ B にしか使用しない情報を含めると、
ページ A でエラーというのが解せません。

おそらく query で頑張れば自前でのチェックはできるんでしょうが、
何のためのテンプレートエンジンか、と思ってしまいます。

> HTML/Mason/CGIHandler.pm
ありがとうございます。MVC 好きなのでこっちの方がよいですね。
それでもやはりモジュール組み込みが必要なのが残念です。

> Embperl
そういえばありましたね。すっかり忘れていました。

とりあえず
 http://68user.blog27.fc2.com/blog-entry-28.html
に追加しました。

68user | URL | 2006-02-17(Fri)13:30 [編集]


ありがとう御座います。

外部コンテンツ連動型のチャットを作ろうと思ってPERLでSOCKETをしようと思い、
↓のページをちらりと見たんですが
http://ash.jp/perl/socket_http.htm
あー駄目…書き方がぶっきらぼうな職人肌過ぎて分らん…
もう6年以上プログラムやってるのになあ…
って軽くションボリック(´・ω・`)な時に次の検索でここにたどり着きました
http://x68000.q-e-d.net/~68user/net/http-2.html
書いてる事は一緒なんだけどこちらはもの凄く丁寧な書き方で
なんも考えずに一発でHTMLをゲットできるし感覚的に分るしでいい事ばかりでした。
素晴らしい知識を公開して下さってありがとう御座いますm(__)m

(´・ω・`)ションボリスト | URL | 2006-02-18(Sat)19:41 [編集]


HTML::Seamstress

使ったことが無いですが HTML::Seamstress に興味があります。

http://search.cpan.org/~tbone/HTML-Seamstress/

と言いつつ自分は HTML::Template しか使ったことがありません。
HTML::Template で不満なのは、全ての TMPL_VAR の ESCAPE をデフォルトで
有効にする方法が無いことかな。エスケープしたくないものだけ、明示できた
らいいのに。

お針子 | URL | 2006-02-28(Tue)01:14 [編集]


> (´・ω・`)ションボリスト
ありがとうございます。わかりにくい表現などありましたら
ご指摘ください。

> HTML::Seamstress
とりあえず http://68user.blog27.fc2.com/blog-entry-28.html
一覧に追加させていただきました。上記 URL にはチマチマと調べて
追記していますが、さっぱり完成しません。

しかし第四世代テンプレートとは大きく出たものですね。

> HTML::Template で不満なのは、全ての TMPL_VAR の ESCAPE を
> デフォルトで有効にする方法が無いことかな。
ごもっともです。ところで View に渡す前にすべてエスケープする
MVC なシステムをわたしは知らなくて、なぜないのかなとずっと
思っているのですが、存在するんでしょうか?

68user | URL | 2006-03-01(Wed)01:58 [編集]


default_escape

HTML::Template 2.8 から default_escape によって、デフォルトでエスケープ出来るようになっているようです。

default_escape - Set this parameter to "HTML", "URL" or "JS" and HTML::Template will apply the specified escaping to all variables unless they declare a different escape in the template.

ceekz | URL | 2006-03-16(Thu)06:40 [編集]


ありがとうございます。
 http://68user.blog27.fc2.com/blog-entry-28.html
に追記させていただきました。

68user | URL | 2006-03-16(Thu)12:36 [編集]


トラックバック

トラックバック URL
この記事にトラックバックする(FC2ブログユーザー)

PCトラブル

興味深い内容で、とても楽しく読ませていただきました。

はろーねっと 2006-03-04 (Sat) 07:14


セカンドライフ Linden Scripting Language

セカンドライフ Linden Scripting Language プログラミング入門 (バーチャルワールドガイドブックシリーズ) (バーチャルワールドガイドブックシリーズ)・[IT][開発]Perlに込められた言語開発者の思想visualbasicvis ...・だからRubyって?・アッー! Rails!・[perl]「Perl

Web開発のレス 2007-10-06 (Sat) 08:26


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。