Catalyst MVCフレームワークの基礎

まえがき

Habréにはほとんどありません。より正確には、CatalystのようなすばらしいMVCフレームワークに関する記事はまったくありません。 それで、最初の記事を彼に捧げることにしました。

ここでは、このフレームワークを習得するためのクイックスタートと呼ばれる単純なWebアプリケーションの例を使用して、Catalystで作業するための基本原則を説明しました。



はじめに

Catalystは、PerlでWebアプリケーションを開発するための強力なMVCフレームワークです。

MVC(モデル/ビュー/コントローラー)について一言:



Catalyst-Perl Webアプリケーションの開発を促進する多数のCPANモジュールが含まれています。



このフレームワークを使用するシンプルさは何ですか?





新しいプロジェクトの作成を作成するプロセスは、コマンドcatalyst.pl Test::App



を使用して実行されます(プロジェクト名が「::」のディレクトリ内のファイルシステムでは、「-」に置き換えられます)。



このスクリプトは、Catalyst :: Helperという補助システムの一部であり、将来のアプリケーションに必要なスクリプト、フォルダー、テスト、ファイルなどを生成します。



作成されたプロジェクトの構造:



適切なコマンドを使用して、必要なモデル/ビュー/コントローラーを追加します: script/test_app_create.pl {model|view|controller} { }







TestApp.pmファイルの内容



 package Test::App; use Moose; use namespace::autoclean; use Catalyst::Runtime 5.80; use Catalyst qw/ -Debug #    ConfigLoader #    Static::Simple #     /root /; extends 'Catalyst'; our $VERSION = '0.01'; __PACKAGE__->config( name => 'Test::App', disable_component_resolution_regex_fallback => 1, enable_catalyst_header => 1, # Send X-Catalyst header ); #   __PACKAGE__->setup(); 1;
      
      





ご覧のとおり、Catalystは、使用されているCPAN要素のオブジェクト表示にMooseモジュールを使用します。これにより、Perl言語のオブジェクトの処理が大幅に簡素化されます。



/ lib / Test / App / Controller /フォルダーにあるRoot.pmファイルは次のようになります。

 #       ,     . package Test::App::Controller::Root; use Moose; use namespace::autoclean; BEGIN { extends 'Catalyst::Controller' } __PACKAGE__->config(namespace => ''); #  ,     Args(0),  ,     url (. test.com/1a/2b/3c  Args(1)  "1b"  .) sub index :Path :Args(0) { my ( $self, $c ) = @ _; # Hello World $c->response->body( $c->welcome_message ); } #    ,      ,   404 sub default :Path { my ( $self, $c ) = @ _; $c->response->body( 'Page not found' ); $c->response->status(404); } # ,      sub end : ActionClass('RenderView') {} 1;
      
      







ここで、このフレームワークを調査した後、簡単なWebアプリケーションを作成してみましょう。



1. script/test_app_create.pl view Web TT



コマンドを使用してビューを作成します( script/test_app_create.pl view Web TT



テンプレートツールキット、テンプレートエンジン、他のテンプレートエンジン、たとえばMasonも使用できます)



2.ルート/フォルダーにindex.ttファイルを作成します

次のコードを貼り付けます:

  [% IF result %]<p>[% result %]</p> [% END %] <form name="hello" method=POST action="hello"> <input type="text" name="hi" value=""> <input type="submit" value="Do something!"> </form>
      
      







3. Root.pmファイルで、次の行を削除します。 $c->response->body( $c->welcome_message ); #



$c->response->body( $c->welcome_message ); #







4.そこで、helloメソッドを追加します。

 sub hello :Local { my ($self, $c) = @ _; my $hi = $c->req->body_params->{hi}; $c->stash( result => $c->model('Hello')->hello($hi), template => 'index.tt', ); }
      
      





5.モデルscript/test_app_create.pl Model Hello





作成script/test_app_create.pl Model Hello





script/test_app_create.pl Model Hello







6.作成されたモデルで、メソッドを記述します。

 sub hello { my ($self, $hi) = @ _; return "Hello $hi!\n"; }
      
      







7.テストサーバーscript/test_app_server



実行します



8.ブラウザで、入力します localhost:3000/



localhost:3000/



(デフォルトポート)



結果に感心します。



PSここでは、原則として、Catalystを使用する際の主なアイデアについて説明します。このフレームワークを知っている人々、つまり人々からのハブに関する記事がもっと欲しいです。 ドキュメントは確かに優れていますが、実際の経験は常に興味深いものです。



PPSこの記事を書いている間、真珠の魔法がなければできませんでした。 コードは、配列「@_」を使用します。これは、「_」という名前のhabrayuzerで真珠の言語を指定するときにタグに変換されます。@と_の間にスペースを入れる方法はありません。 注意してください...



All Articles