10

私が見た CGI/Perl の例はすべて、基本的に HTML を含む一連の print ステートメントであり、これは CGI アプリケーションを作成する最良の方法とは思えません。これを行うより良い方法はありますか?ありがとう。

編集: CGI::Application と HTML::Template を使用することに決め、次のチュートリアルを使用します。http://docs.google.com/View?docid=dd363fg9_77gb4hdh7b . ありがとう!

4

6 に答える 6

17

もちろんです (おそらく 90 年代のチュートリアルを見ているでしょう)。フレームワークを選択する必要があります。Perl ランドでは、これらが最も一般的な選択肢です。

  • CGI::Application - 多くのコミュニティ プラグインを備えた非常に軽量
  • 触媒- より多くのベルとホイッスルを備えたより重い
  • Jifty - 上記よりも魔法
于 2008-11-24T16:38:20.943 に答える
11

これは本当に大きな問題です。要するに、より良い方法は、モデル/ビュー/コントローラー(別名 MVC) と呼ばれます。MVC では、アプリケーションは 3 つの部分に分割されます。

モデルは、データとビジネス ロジックです。アプリケーションのコアを構成するものです。

ビューは、ユーザーに物事を提示するためのコードです。Web アプリケーションでは、これは通常、ある種のテンプレート システムですが、PDF や Excel スプレッドシートの場合もあります。基本的にはアウトプットです。

最後に、コントローラーがあります。これは、モデルとビューをまとめる責任があります。ユーザーのリクエストを受け取り、関連するモデル オブジェクトを取得し、適切なビューを呼び出します。

mpeters は、Perl 用のいくつかの MVC フレームワークについて既に言及しています。また、テンプレート エンジンを選択する必要があります。最も人気のある 2 つはTemplate ToolkitMasonです。

于 2008-11-24T16:45:23.643 に答える
10

CGI と MVC フレームワークの問題はさておき、必要なのは CPAN の出力テンプレート モジュールの 1 つです。

Template Toolkit は非常に人気があります (CPAN の Template.pm)。Text::Template、HTML::Template、および HTML::Mason も人気があります。

HTML::Mason は単なるテンプレート モジュールではなく、単純な CGI アプリケーションには少し重すぎるかもしれませんが、どちらが自分に最適かを判断する際に少し調査する価値があります。

Text::Template はかなりシンプルで、テンプレート内で Perl を使用しているため、データをループして Perl で表示ロジックを実行できます。これは、人々によって長所と短所の両方と見なされています。

HTML::Template も小さくてシンプルです。if/then/else 処理、変数設定、およびループ用の独自の小さなタグ セットを実装します。それでおしまい。これは、Text::Template とは正反対の理由から、長所と短所の両方と見なされます。

テンプレート ツールキット (TT) は、ループやロジックなどを含む非常に大規模な perlish テンプレート言語を実装しています。

私は HTML::Template を使用しましたが、さらにいくつかの機能が必要であることがわかりました。次に、Text::Template を使用して成功しましたが、名前空間をいじりたいという欲求が少し面倒であることがわかりました。Template Toolkit を知り、気に入りました。私にとっては、ちょうどいい感じです。あなたのマイレージは異なる場合があります。

もちろん、古い「print HTML」メソッドがまだ残っており、いくつかの print ステートメントで十分な場合もあります。しかし、メイン ロジックからディスプレイを分離するという考えにたどり着きました。これは良いことです。

これは、モデル/ビュー/コントローラー (MVC) への道のりの最初のステップであり、データ モデルとビジネス ロジック (入力を受け取り、それに対して何かを実行し、何を出力する必要があるかを決定するコード) を分離します。 /output (テンプレートまたは印刷ステートメント - HTML、PDF など) と、2 つを接続するコード (CGI、CGI::Application、Catalyst MVC フレームワークなど)。データ構造 (モデル内) を変更しても、出力ルーチン (ビュー) を変更する必要はないという考えです。

于 2008-11-24T18:31:50.543 に答える
5

Perl5 Wikiは、 Webフレームワークテンプレートの優れた(まだ完全ではありませんが)リストを提供します。

「テンプレート」wikiエントリにリンクされている比較記事は読む価値があります。また、PerlMonksに関するこのプッシュスタイルのテンプレートシステムの記事を読むことをお勧めします。

テンプレートを作成する場合、 Template Toolkitは私が最も使用したものであり、強くお勧めできます。O'Reillyの本もあり、おそらくPerl王国で最も使用されているテンプレートシステムです(Webフレームワークの内部または外部)。

私がますます惹かれているもう1つのアプローチは、非テンプレートの「ビルダー」ソリューションです。Template::DeclareHTML::AsSubsなどのモジュールはこの法案に適合します。

于 2008-11-24T17:28:31.450 に答える
4

フレームワーク/ロール・ユア・オウンのジレンマで適切なバランスを取ると私が感じる 1 つの解決策は、3 つの主要な perl モジュール ( CGI.pmTemplate Toolkit、およびDBI ) を使用することです。これら 3 つのモジュールを使用すると、記述と保守が容易な洗練された MVC プログラミングを行うことができます。

3 つのモジュールはすべて、必要に応じて HTML、XML、さらには pdf でデータを出力できる Template Toolkit (TT) で非常に柔軟です。TT に perl ロジックを含めることもできます。そこにデータベース インターフェースを追加することもできます。これにより、特に「標準」プラグマを使用する場合に、CGI スクリプトが非常に小さくなり、保守が容易になります。

また、クライアントとサーバー間の分離を模倣するテンプレート自体に JavaScript と AJAXy のものを配置することもできます。

これら 3 つのモジュールは、CPAN で最も人気のあるモジュールの 1 つであり、優れたドキュメントと幅広いユーザー ベースを備えています。さらに、これらを使用して開発するということは、コードのプロトタイプを作成したら、mod_perl にすばやく移行して、Apache の組み込み perl 環境にすばやく移行できることを意味します。

全体として、コンパクトでありながら柔軟なツールセットです。

于 2008-11-25T09:56:59.943 に答える
2

また、プレゼンテーションをコードから分離し、本格的なフレームワークのすべてのオーバーヘッドをもたらす必要なしに、テンプレートシステムを使用することもできます。 Template Toolkitは、 Masonと同様に、この方法で単独で使用できますが、テンプレートシステムを装ったフレームワークであると考える傾向があります。

ただし、コードをプレゼンテーションから分離することに真剣に取り組んでいる場合は、TTとMasonの両方で、実行可能コードをテンプレートに埋め込むことができる(または、読むドキュメントによっては推奨する)ことに注意してください。個人的には、HTMLにコードを埋め込むことは、コードにHTMLを埋め込むことよりも優れていると感じているので、HTML::Templateを選択する傾向があります。

于 2008-11-24T17:34:37.163 に答える