【发布时间】:2014-03-31 23:56:32
【问题描述】:
我正在尝试在我的第一个应用程序中使用 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。
在我的常规无框架应用程序中,我只加载基于路由/动作的模块,所以我只为每个动作的每个路由加载一个模块,逻辑如下:
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(); }
【问题讨论】:
-
我建议将您的第二个问题作为一个实际的单独问题发布。
-
@ysth 我按照你的建议做了