gpt4 book ai didi

所有请求的 Perl Dancer index.cgi

转载 作者:行者123 更新时间:2023-12-01 23:58:02 24 4
gpt4 key购买 nike

我正在尝试使用 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。

在我的常规 none Framework 应用程序中,我只加载基于路由/操作的模块,所以我只为每个路由每个操作加载一个模块,逻辑如下:

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(); }

最佳答案

'index.cgi' 未在 Perl Dancer 中使用。

该框架旨在让您将应用程序分解为一堆逻辑模块。以有意义的方式对它们进行分组。例如,对于带有照片的论坛应用程序,您可能有一个“用户”模块、一个“消息”模块和一个“照片”模块。

在 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 并包含新模块(和路由)。

关于所有请求的 Perl Dancer index.cgi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22741366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com