我正在尝试在第一个应用程序中使用Perl Dancer模块。第一个应用程序创建了一个名为MyWeb-App / bin / app.pl的文件,其中包含以下代码:
use Dancer;
use MyWeb::App;
dance;
,名为MyWeb-App / lib / MyWeb / App.pm的文件包含以下代码:
package MyWeb::App;
use Dancer ':syntax';
our $VERSION = '0.1';
get '/' => sub {
template 'index';
};
true;
我只想要一个index.cgi文件来处理我的所有应用程序请求。我的问题是, 我是否必须将所有操作/方法放在相同的MyWeb-App / bin / app.pl文件和模块中 对于MyWeb-App / lib / MyWeb / App.pm模块等每个操作/方法。
原因是我的应用程序将包含数百个这样的操作:
get 'register' => sub {...};
post 'save_register' => sub {...};
get 'contactus' => sub {...};
post 'save_contactus' => sub {...};
.....
get 'order' => sub {...};
post 'process_order' => sub {...};
所以我必须将所有这样的操作放在一个主index.cgi中,每次为应用程序添加新操作或新模块时都必须修改此文件。
简而言之,如何以模块化方式使用大量操作的应用程序,因此每个操作在一个模块文件中以便于维护,但其他开发人员可以向应用程序添加单独的模块,而不会重叠/损坏主index.cgi。< / p>
在我的常规无框架应用程序中,我只根据路由/操作加载模块,因此每个操作每个路径只加载一个模块,其逻辑如下:
if ($route eq "register") { eval "use register.pm"; register(); }
elsif ($route eq "save_register") { eval "use register.pm"; save_register(); }
....
....
elsif ($route eq "contactus") { eval "use contactus.pm"; contactus(); }
答案 0 :(得分:3)
&#39;的index.cgi&#39;在Perl Dancer中不使用。
该框架旨在将您的应用程序分解为一堆逻辑模块。以有意义的方式对它们进行分组。例如,对于带有照片的论坛应用程序,您可能会有一个&#34;用户&#34;模块,&#34;消息&#34;模块和&#34;照片&#34;模块。
在app.pl中,您将拥有:
use Dancer;
use MyWeb::Users;
use MyWeb::Messages;
use MyWeb::Photos;
dance;
然后,您将在./lib中创建3个不同的.pm文件,比如users.pm,messages,pm,photos.pm等,然后包含每个模块的相关路由。您的路线可能以/ user / ,/ message / 和/ photo / *开头。例如,POST / user,GET / user等。考虑使用前缀函数。
这可以使您的项目易于管理,并且您的路线也很有条理。随着项目的增长和添加更多模块,您只需修改app.pl并包含新模块(和路由)。