[英]Strategy for migrating Perl CGI to Template Toolkit?
我有一个相对较大的传统Perl / CGI / DBI Web应用程序,它可以一个接一个地生成HTML。 我们正在重新制作正在生成的HTML,以符合HTML 5 / CSS 3.这是转向某种模板系统的好时机。 我们不想进行完全重写,因此不希望迁移到Catalyst等框架。
我认为Perl模板工具包可能是我们影响最小的手段。 我正在重读“古老的Badger Book”以研究可行性。
我的问题是这个。 有没有人在这里将“旧学校”Perl Web代码迁移到Template Toolkit? 您是否有任何技巧可以分享,以尽量减少重写/返工? 我们还没有100%决定使用Template Toolkit。 如果有替代方案我们应该考虑?
具体来说,我们试图解决什么问题? 我们正在生成无效的HTML并需要清理它。 由于我们正在清理,我们希望生成完全有效的HTML 5,并且在可行的范围内,生成有效的CSS3和Javascript。 我们通过jQuery使用jQuery,jQuery UI小部件和AJAX。 我们有典型的页面控制器MVC架构,除了没有View层。 我们想去某种模板系统,但不想重写所有东西(或许多东西!)进行迁移。
谢谢! Ed Barnard,Cannon Falls MN
这是我发现的,因为我已将我的练习从CGI.pm转移到TT,以及我在使用HTML :: Mason,HTML :: Template,Text :: Template和使用的方式中学到的东西。 Rails中的ERB和HAML。
让我们想象一个由标题,页脚和正文组成的相当小的,人为的网页。 我们假设页脚是完全静态的,每次加载新页面时主体都会更改,但只有当用户登录/注销时标题才会更改。
你可以想象包含这样的代码的标题:
<header>
[% IF $user.is_logged_in THEN %]
Hello [% $user.name %] - <a href="/logout/user/[% $user.id %]">Log Out</a>
[% ELSE %]
Please <a href="/user/login">Log In</a>
[% END %]
</header>
但是你最好在header.tt中做这件事:
<header>
[% user_info($user) |html %]
</header>
这在View :: Helpers :: Header.pm中:
sub user_info {
my $user = shift;
if ($user->{is_logged_in} ) {
return "Hello $user->{name} - " . logout_link($user->{id});
}
else {
return "Please " . login_link();
}
}
sub logout_link {
my $userid = shift;
return qq(<a href="/logout/user/[% $userid %]">Log Out</a>)
}
当然,您可以在TT而不是纯Perl中实现视图助手,我没有任何类型的数字,但如果您已经在Perl中完成了所有逻辑,则可以将Perl重构为模块(如果它不存在),而不是在TT中重新编码。
作为测试套件的一部分,请考虑HTML验证器,如HTML :: Lint或HTML :: Tidy。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.