Mojolicious 경로 구성

Mojolicious은 멋진 웹 프레임워크이며 저는 2년 동안 이 프레임워크에서 앱을 개발해 왔습니다.

기본 구조는 (문서에서 제거됨 - Growing )

myapp                      # Application directory
|- script                  # Script directory
|  +- my_app               # Application script
|- lib                     # Library directory
|  |- MyApp.pm             # Application class
|  +- MyApp                # Application namespace
|     +- Controller        # Controller namespace
|        +- Example.pm     # Controller class
|- my_app.yml              # Configuration file
|- t                       # Test directory
|  +- basic.t              # Random test
|- log                     # Log directory
|  +- development.log      # Development mode log file
|- public                  # Static file directory (served automatically)
|  +- index.html           # Static HTML file
+- templates               # Template directory
   |- layouts              # Template directory for layouts
   |  +- default.html.ep   # Layout template
   +- example              # Template directory for "Example" controller
      +- welcome.html.ep   # Template for "welcome" action


MyApp.pm은 경로, 앱 설정 및 플러그인을 정의하는 핵심 파일입니다. 내 앱을 성장시키면서 해당 pm 파일이 경로를 포함하여 매우 커졌고(200줄 이상) 무언가를 해야 했습니다. 프로젝트가 커지면 경로에 플러그인을 사용하는 것이 가장 좋다는 개발자의 말을 읽은 것을 기억합니다.

Route > user.pm이라는 lib 아래에 폴더와 파일을 만들었습니다.

나는 일반적으로 이 패턴을 따르므로 내 URL이/user/lookup인 경우
내 모든/user 경로를 처리할 Route/user.pm이라는 경로 파일이 있습니다.

다음은 플러그인의 모습입니다.

lib/MyApp/route/user.pm 아래

package MyApp::Route::User;
use Mojo::Base 'Mojolicious::Plugin', -signatures;

sub register ($self, $app, $r) {
  $r->get('/user/lookup')->to('user#lookup');
}

1;


이제 lib 아래의 MyApp.pm에 추가합니다.

my $r = $self->routes; #this should be somewhere already in the pm file.
$self->plugin('MyApp::Route::User', $r);


이렇게 하면 MyApp.pm에서 수많은 줄이 제거되고 작업이 필요할 때 경로를 쉽게 찾을 수 있습니다.

좋은 웹페이지 즐겨찾기