我对Perl CGI程序有一般性质疑。对于少数应用程序,不使用MVC,开发人员编写CGI程序,可能使用CGI.pm或他们喜欢的其他方式,并且从屏幕移动到sceen,编写新的CGI程序(使用 - CVS TAGS,Perl header等等。)。
但我觉得如果有其他程序不需要的东西(子程序或业务逻辑),我会继续调用基于一个额外Role参数调用的每个页面的相同脚本。我得到的好处是一次头部声明,易于维护,
%frmData = CGI::Lite->parse_form_data();
$Role = $frmData{Role};
if ($Role eq 'A'){ getPageFirst()}
elsif ($Role eq 'B'){ getPageB()} etc..
这是正确的做法吗?我们可以面对某种问题。什么是最好的方法?
答案 0 :(得分:2)
我认为将一堆功能(几个CGI)合并到一个文件中并不能真正帮助维护。
另一种方法是将CGI分开,并将公共代码放入单独的文件(例如Perl模块)中,每个文件都可以包含。
你提到你担心包含所有CGI不必要的东西。在我看来,通过组合的大CGI,你实际上使这种情况变得更糟。使用模块,您可以包含所需内容。
我们可以面对某种问题吗?
CGI可能遇到的第一个问题是性能,因为脚本需要一直重新加载。所以你想看看像FastCGI这样的东西,它将脚本(和库)保存在请求之间的内存中。如果你去那里,将你的代码库正确分成模块会有所帮助。
答案 1 :(得分:1)
仅基于您所说的内容,我会说您正在创建一个维护噩梦,即将相同的代码复制到多个程序中,并在每个程序中执行相同的逻辑。至少,您可能希望将其移动到共享库中。
听起来你可能会遇到CGI::Prototype要解决的问题。它处理选择您应该在的页面,并允许您为其分配正确的处理程序。这是一个最小的框架,不能提供更多的东西。
如果不了解您正在做的事情,很难给出更好的答案。