Javascript 带有perl后端的Ajax应用程序-如何使用?

Javascript 带有perl后端的Ajax应用程序-如何使用?,javascript,perl,Javascript,Perl,关于Perl+AJAX,比如,or和其他一些问题已经存在。他们已经2岁多了,我希望有一些新东西 问题是: 目前,使用Perl后端制作AJAX应用程序的首选方法是什么 是否有一些活动的和常用的Perl模块可以帮助构建基于AJAX的应用程序 对于通常的工作流程: if clicked this button (or changed this field.. etc), POST these data to the server, read the JSON answer, and upd

关于Perl+AJAX,比如,or和其他一些问题已经存在。他们已经2岁多了,我希望有一些新东西

问题是:
  • 目前,使用Perl后端制作AJAX应用程序的首选方法是什么
  • 是否有一些活动的和常用的Perl模块可以帮助构建基于AJAX的应用程序
对于通常的工作流程:

 if clicked this button (or changed this field.. etc),
 POST these data to the server,
 read the JSON answer,
 and update this/these DIV(s) in a DOM... etc.
这个问题可以归为模糊的,但我真的迷路了,需要帮助:今天Perl世界中最常见的AJAX应用程序制作方法是什么

正在寻找帮助器模块,帮助我构建浏览器端javascript。 我发现:

  • (但这是基于CGI的,IMHO不是Plack world的最佳选择)
这些模块已经好几年没有更新了。它们是否稳定且在使用中?或者他们不赞成,有没有更好的方法?(适用于现代Perl技术,如Plack)

更新 当我阅读答案时,我想主要的问题可能是我的英语。我不知道如何正确地表达自己

我懂Perl。也许我不是专家,但我写了几千行代码。我认识Dancer,并且已经用Mojo编写了一些应用程序…::Lite。知道JSON{::XS},我也知道AJAX是如何工作的

现在(出于某种原因),我更喜欢使用Mason2,使用Mason::Plugin::RouterSimple和其他几个CPAN模块和Moose。Catalyst,Jifty对我来说太大了

回到问题上来:

我最喜欢的JS框架是jQuery,我在几个模态窗口、手风琴、选项卡等项目中使用它

但是

我的主要问题正是Sismetic的答案。我不想写JavaScript。我不喜欢它。(我不太懂,讨厌每一种我必须写的语言,比如:
var-arr=new-Array();
而不是
my@arr

因此,寻找一个解决方案,我如何最小化(或者在理想世界中-完全消除)编写JavaScript代码的需要。不想写入我的模板

$('.clickableButton').click(function(e) {
      .... etc... etc..
)}
但有点像:

 $ajax->make_button( -onchange=>$url, -updatedom=>'#thisdiv", some_special_button_description_in_perl );
 $tohead .= $ajax->gen_libs();
 $tohtml .= $ajax->gen_html();
 $jsdocready .= $ajax->gen_jsinitcode();
在我的模板中,
$tohead
将只输出头部部分的
$tohtml
$tohtml
将进入正文,而
$jsdocready
将作为JavaScript初始代码进入正文的末尾

当然,上面的例子很愚蠢,但希望能说明我的意思。简单地说:理想的解决方案是(可能不存在)完全消除编写JavaScript的需要,只有Perl代码才能生成所需的JS


因此,我特别提到了上述模块,因为它们确实有助于最小化JavaScript的编写。问题是——这些已经有两年没有更新了;(不幸的是,我不认识其他人。

我使用CGI::Application作为基本框架,CGI::Application::Plugin::JSON将JSON数据返回到jQuery。

寻找“ajax”这并不是您真正需要的。只需使用您选择的web框架,该框架具有良好的序列化功能,可以处理接受头等。例如and、or。不要编写编写编写Javascript的Perl,这只会让您感到悲伤。

您得不到答案的原因不仅仅是问题的模糊性。问题空间是无限的y宽,具有多个攻角

让我们澄清一下,Ajax中的“x”不应该再被认为是XML的意思了。JSON显然更自然,而且不会遇到太多问题,所以我的所有建议都指向它

所说的已经是正确的。你根本不想弄乱服务器端代码,而是想采用一个框架。这不是因为在Perl中处理Ajax很难;这很简单。这是因为问题空间很快变得混乱,你最终会以无休止的小变化重复代码。因此——

Perl/服务器端 所有这些最终都会让你快乐。它们都有一个学习曲线。还有其他选择,但这些是最好的™.

  • ()
  • ()
  • (对于HTML5/Websockets更喜欢Mojolicious)
部署应基于

花点时间真正了解Perl的Ajax处理的核心:这样您就知道各种框架中的视图在幕后做了什么

JavaScript/客户端 在这一点上,这本质上是财富的尴尬

    • 许多Perl黑客都喜欢这个工具包;它似乎达到了Perl的最佳状态。我喜欢jQuery
    • 我不是一个粉丝-他们在早期版本中有最糟糕的文档,并且在删除小文档时破坏了兼容性-但是在当前版本中它很受欢迎
    • 这个,现在距离YUI很远的fork是客户端JS的800磅大猩猩。我个人不喜欢它,因为它没有优雅的退化,等等,但是它受到高度重视,并且非常犀利
我个人不喜欢也不能推荐,虽然我从未使用过它,但我也选择不把它列入名单

<> P.>还有很多其他令人惊异的专业工具包,例如,当你正在研究JS时,考虑标准遵从性和前瞻性特征(如CSS3、HTML5、扩展事件处理,如多点触摸)对你将要做什么的重要性。祝你好运,玩得开心。

更新:可能有进一步的兴趣
  • –JavaScript模板
  • –YAWF

如果您想使用Perl模块生成HTML代码,我建议使用CGI.pm:

...
use strict;
use warnings;
#CGI is shipped along perl, I think
use CGI;

my $CGI = CGI->new();

my $return_string = '';
#From CGI documentation on CPAN
#http://search.cpan.org/~markstos/CGI.pm-3.55/lib/CGI.pm
$return_string .= $CGI->header;
$return_string .= $CGI->start_html('hello world');
$return_string .= $CGI->h1('hello world');
$return_string .= $CGI->button(-name    => 'button_name',
                               -value   => 'Click Me!',
                               #Javascript event if needed
                               -onClick => "do_something()"
                              );
$return_string .= $CGI->end_html;
print $return_string;
或者(因为我不喜欢后一种方法),您可以在perl上编写(自己手动生成):

使用严格;
使用警告;
#需要的标题,否则将返回错误
打印“内容类型:text/html\n\n”;
#返回0到100之间的随机数
我的$random_号码
use strict;
use warnings;

#Needed header, otherwise will return error
print "Content-type: text/html\n\n"; 

#return random number from 0 to 100
my $random_number = int(rand(101));

my $HTML_generated_string = qq|
<html>
 <head>
  <title>HTML generated manually with perl</title>
 </head>
 <body>
  <h1>Hello world</h1>
  Bla bla bla Heres the random number $random_number
 </body>
</html>
|;

print $HTML_generated_string;