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

时间:2008-11-14 14:55:54

标签: perl

几年前,我在CGI.pm做了很多工作。我正在评估再次使用它来进行快速项目。有人能让我快速了解CGI.pm在“Web 2.0”世界中的当前发展状况吗? CPAN上最好的库有哪些?有没有简洁的方法来包含jQuery,YUI,其他CSS库等,并做一些AJAX。 CPAN当然有很多库,但有什么用,有什么用?

我们还没有这样做?

$JSCRIPT<<EOF;
...
EOF

我意识到人们会提供Catalyst作为答案。但是,许多人可能只有想要增强的遗留CGI.pm应用程序。重新开始真的是最好的答案吗?

9 个答案:

答案 0 :(得分:11)

就我个人而言,我不是Catalyst的粉丝(对我而言太重)或Mason(混合代码和HTML是糟糕的ju-ju),但我使用CGI.pm进行输入[1],HTML: :用于输出的模板,以及用于在需要时提供AJAX功能的CGI :: Ajax。

如果您正在查看框架,您可能还需要考虑CGI :: Application,这是一种广泛使用且重量更轻的Catalyst / Mason替代品。

[1]我记不起上次我从CGI.pm调用除$ q-&gt; param或$ q-&gt; cookie以外的任何内容。还有很多教程说要使用它的HTML生成函数,但这仍然混合代码和HTML的方式与使用这里的文档一样糟糕,如果不是更糟的话。

答案 1 :(得分:4)

考虑使用更现代的东西,例如Catalyst。它将使您的生活更轻松,您不必重新发明轮子。我知道这只是一个小项目,但根据我的经验,许多小项目及时成为大型项目:)

答案 2 :(得分:3)

我使用的“web 2.0”应用程序通常使用客户端JavaScript从服务器请求JSON数据,然后使用该数据通过DOM就地更新页面。

JSON模块对于将结构化数据返回浏览器非常有用。

至于包括JavaScript,HTML或其他任何文档 - 从不一个好主意,但仍然不是。相反,可以在CPAN上找到过多的模板模块之一。对于CGI,我会避免使用像Mason或Template Toolkit这样的“重型”模块,并使用更轻的模块来更快地启动,例如Text::TemplateTemplate::Simple

答案 3 :(得分:3)

是的,您可以编写完美的web2.0 Web应用程序,无需在服务器端使用任何语言Perl,Python,Java等,并且无需在客户端使用任何JavaScript库/框架。 Web 2.0的定义是一种松散的定义,我猜测web2.0,你的意思是Ajax或部分页面刷新,那么你真正需要的只是关注以下内容:

  1. 了解XmlHttpRequest对象。
  2. 了解如何将JSON对象从服务器返回到客户端。
  3. 知道如何使用JavaScript安全地评估/解析JSON对象并知道如何操作DOM。另外,至少知道innerHTML。 InnerHTML偶尔会有用。
  4. 了解CSS。
  5. 话虽如此,在服务器端使用某个框架要容易得多,但并不是因为web2.0需要它,而且在客户端上使用jQuery,mootools,YUI等一些JavaScript要容易得多。你可以混合搭配取决于你的需求和你的口味。大多数JavaScript提供了XmlHttpRequest的包装器,因此它适用于所有浏览器。没有人再写“裸”的XmlHttpRequest,除非你想展示一些样本。

答案 4 :(得分:2)

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

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

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

另一方面,如果您正在尝试编写真实外观,感觉和工作方式的内容,例如现代Web应用程序(例如,远离页面加载是应用程序状态模型),您应该考虑从头开始。尝试进行大量的转型之后,除了最微不足道的应用程序外,其他任何事情都会变得更加麻烦。

答案 5 :(得分:1)

我同意Adam的回答,你可能想要使用Catalyst。话虽这么说,如果你真的不想,没有什么能阻止你只使用CGI.pm.问题是,Catalyst是一系列软件包,可以帮助您轻松完成Web 2.0。它将各种模板引擎(如Template Toolkit或Mason)与各种ORM接口(如DBIx :: Class和Class :: DBI)结合在一起。

当然,您不必使用这些东西来编写Web 2.0应用程序,这只是一个好主意。您的部分问题是想知道jQuery和CSS框架如jQuery或原型是否需要服务器端代码中的任何内容。他们没有,你可以使用任何你想要的服务器端代码。

答案 6 :(得分:1)

如果从CGI.pm跳转到Catalyst似乎太令人生畏,那么像Squatting这样的东西可能会更合适吗?

Squatting是一个网络微框架,我发现它非常适合快速原型设计和替换/升级旧的CGI脚本。

我最近使用jQuery构建了一个小型“web 2.0”应用程序,并且没有任何问题。在CPAN发行版中有一个示例目录,其中包含一些使用jQuery和AJAX的程序,包括一个非常有趣的[COMET](http://en.wikipedia.org/wiki/Comet_(programming))示例,该示例使用Continuity(默认情况下Squatting“squats”)

NB。如果需要,您可以稍后使用Squatting::On::Catalyst

将您的应用“蹲”到Catalyst上

答案 7 :(得分:1)

对于新应用,如果您没有找到符合您口味的Catalyst,Dancer是您可能喜欢的另一个轻量级框架。还有很多其他的,包括CGI :: Simple,Mojo / Mojolicious,Squatting ......

任何这些轻量级框架都可以为您处理无聊的Web编程部分,让您继续以您想要的方式编写有趣的部分。

答案 8 :(得分:0)

还有CGI::Ajax