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で真珠の言語を指定するときにタグに変換されます。@と_の間にスペースを入れる方法はありません。 注意してください...

Source: https://habr.com/ru/post/J146074/


All Articles