Perl 如何使用CGI.pm开发web 2.0应用程序?

Perl 如何使用CGI.pm开发web 2.0应用程序?,perl,Perl,几年前,我在CGI.pm上做了很多工作。我正在评估再次使用它进行快速项目。有人能告诉我在“Web2.0”世界中使用CGI.pm开发的当前状态吗?CPAN上最好的库是什么?是否有干净的方法包括jQuery、YUI、其他CSS库等,并执行一些AJAX。当然,CPAN上有很多库,但是什么是有效的,什么是常用的 我们现在还没这么做 $JSCRIPT<<EOF; ... EOF $JSCRIPT例如,考虑使用更现代的东西。这将使你的生活更加轻松,你不必重新发明轮子。我知道这只是一个小项目,但根

几年前,我在CGI.pm上做了很多工作。我正在评估再次使用它进行快速项目。有人能告诉我在“Web2.0”世界中使用CGI.pm开发的当前状态吗?CPAN上最好的库是什么?是否有干净的方法包括jQuery、YUI、其他CSS库等,并执行一些AJAX。当然,CPAN上有很多库,但是什么是有效的,什么是常用的

我们现在还没这么做

$JSCRIPT<<EOF; ... EOF
$JSCRIPT例如,考虑使用更现代的东西。这将使你的生活更加轻松,你不必重新发明轮子。我知道这只是一个小项目,但根据我的经验,很多小项目最终都会变成大项目:)

使用CGI.pm编写“Web 2.0”应用程序是完全可能的,但你必须自己完成这项工作。据我所见,Perl开发社区的重点一直是开发CGI的后续框架,而不是编写帮助器模块,以使遗留应用程序能够引导到现代范例中。所以你有点孤立无援

至于是否重新开始,你真正想要完成的是什么?每个人对“Web2.0”的定义都有所不同

如果您正试图在遗留应用程序中引入一些现代功能(如AJAX),那么没有理由需要重新开始


另一方面,如果你想写一些看起来真的、感觉很好的作品,就像一个现代的Web应用程序(例如,远离页面加载是应用程序状态模型),你可能应该考虑从底层开始。试图在事实发生后进行如此多的转换,除了最琐碎的应用程序之外,将是一件非常麻烦的事情。

我同意亚当的答案,你可能想使用Catalyst。也就是说,如果你真的不想,没有什么可以阻止你只使用CGI.pm。问题是,Catalyst是一组软件包,这些软件包完成了使Web2.0变得简单的任务。它将各种模板引擎(如TemplateToolkit或Mason)与各种ORM接口(如DBIx::Class和Class::DBI)相结合


当然,你不必使用这些东西来编写Web2.0应用程序,这只是一个好主意。部分问题是想知道像jQuery或prototype这样的javascript和CSS框架是否需要服务器端代码。它们没有,您可以将它们与任何类型的服务器端代码一起使用。

如果从CGI.pm跳到Catalyst似乎太令人畏惧,那么可能更适合这样做

是一个web微框架,我发现它非常适合快速原型制作和替换/升级我的旧CGI脚本

我最近构建了一个小型的“Web2.0”应用程序,使用jQuery进行蹲式操作,没有任何问题。在CPAN发行版中有一个示例目录,其中包含一些使用jQuery和AJAX的程序,其中包括一个非常有趣的[COMET](示例利用了(默认情况下,蹲起“蹲起”)

注意:如果需要,您可以稍后使用我使用过的“web 2.0”应用程序将应用程序“下蹲”到Catalyst上,这些应用程序通常使用客户端JavaScript从服务器请求数据,然后使用这些数据通过DOM就地更新页面

该模块用于将结构化数据返回到浏览器


至于在here doc中包含JavaScript、HTML或其他内容,这从来都不是一个好主意,现在仍然不是。相反,使用CPAN上过多的模板模块之一。对于CGI,我会避免“沉重”像Mason或Template Toolkit这样的模块,并使用更轻的模块来加快启动速度,例如,或。

就我个人而言,我不喜欢Catalyst(对我来说太重)或Mason(混合代码和HTML是不好的ju-ju),但我很好地使用CGI.pm进行输入[1],HTML::Template用于输出,CGI::Ajax用于在需要时提供Ajax功能

如果你正在研究框架,你可能还需要考虑CGI::Apple,它是一种广泛使用和重量轻的替代催化剂/Mason的软件。


[1]我记不起上一次除了从CGI.pm调用$q->param或$q->cookie之外,我还调用了其他任何东西。仍然有很多教程说要使用它的HTML生成功能,但这仍然是混合代码和HTML的方式,与使用here docs一样糟糕,甚至更糟。

是的,你可以用它编写完美的web2.0 web应用程序在服务器端使用任何语言Perl、Python、Java等的框架,而在客户端不使用任何JavaScript库/框架。web 2.0的定义有点松散,我猜web2.0是指Ajax或部分页面刷新,那么您真正需要的就是关注以下内容:

  • 了解XmlHttpRequest对象
  • 知道如何将JSON对象从服务器返回到客户端
  • 知道如何使用JavaScript安全地评估/解析JSON对象,并知道如何操作DOM。此外,至少知道innerHTML。innerHTML有时会有所帮助
  • 了解CSS

  • 话虽如此,在服务器端使用一些框架要容易得多,但这并不是因为web2.0需要它,而且在客户端使用一些JavaScript(如jQuery、mootools、YUI)要容易得多。而且,您可以根据自己的需要和喜好进行混合和匹配。大多数JavaScript都提供了XmlHttpRequest的包装器,因此可以正常工作所有浏览器中都有。除非你想展示一些示例,否则再也没有人编写“裸”XmlHttpRequest了。

    对于新应用程序,如果你觉得Catalyst不符合你的口味,这是另一个你可能喜欢的轻量级框架。还有很多其他框架,包括CGI::Simple、Mojo/Mojolicous、Shutting

    这些轻量级框架中的任何一个都可以为您处理web编程中枯燥的部分,并让您继续使用w