Habréにはほとんどありません。より正確には、CatalystのようなすばらしいMVCフレームワークに関する記事はまったくありません。 それで、最初の記事を彼に捧げることにしました。
ここでは、このフレームワークを習得するためのクイックスタートと呼ばれる単純なWebアプリケーションの例を使用して、Catalystで作業するための基本原則を説明しました。
はじめに
Catalystは、PerlでWebアプリケーションを開発するための強力なMVCフレームワークです。
MVC(モデル/ビュー/コントローラー)について一言:
- モデル(Model)-それらを操作するためのデータとメソッドのみが含まれます。
- ビュー(ビュー)-このデータがどのように表示されるかを決定します。
- コントローラー(コントローラー)-システムとユーザー間の通信を制御し、アプリケーション中に必要な相互作用も制御します。
Catalyst-Perl Webアプリケーションの開発を促進する多数のCPANモジュールが含まれています。
このフレームワークを使用するシンプルさは何ですか?
新しいプロジェクトの作成を作成するプロセスは、コマンド
catalyst.pl Test::App
      
      を使用して実行されます(プロジェクト名が「::」のディレクトリ内のファイルシステムでは、「-」に置き換えられます)。
このスクリプトは、Catalyst :: Helperという補助システムの一部であり、将来のアプリケーションに必要なスクリプト、フォルダー、テスト、ファイルなどを生成します。
作成されたプロジェクトの構造:
-   / lib-プロジェクトの中心であり、Webアプリケーション向けのすべてのperlコードが含まれ、自動的に作成されたサブディレクトリで構成されます。 
      
 
 - テスト/アプリ/モデル-モデルを実装するモジュール用。
- テスト/アプリ/表示-...表示;
- テスト/アプリ/コントローラー-...コントローラー;
- Test / App / App.pm-Webアプリケーションをセットアップするためのモジュール。
 
 
 
- / root-Viewのテンプレートはここに保存され、必要なcss、js、images、一般にすべての静的データ。
-   / script-ヘルパーによって自動的に作成されたスクリプトが含まれています。 それらは実行するために必要です: 
      
 
 - テストサーバー。
- 特定のURLをテストします。
- MVCコンポーネントの作成。
- CGI / FastCGIなどのスクリプトを実行します。
- など
 
 
 
- / t-テストを含む
- 変更-プロジェクトへの変更の履歴。
- Makefile.PL-アプリケーションのデプロイ時に必要なモジュールをインストールするためのサービス情報。
- test_app.conf-構成ファイル、ユーティリティ変数が指定されています(起動時の優先順位は、アプリケーション内の設定よりも高くなっています)。
- README-アプリケーションの起動、インストール、設定などに関する情報
適切なコマンドを使用して、必要なモデル/ビュー/コントローラーを追加します:
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で真珠の言語を指定するときにタグに変換されます。@と_の間にスペースを入れる方法はありません。 注意してください...