是否可以将 TT2 与 Cro 一起使用?
Is it possible to use TT2 with Cro?
我正在考虑使用perl6 和Cro 建立一个带有文本内容的网站。是否有关于将 Cro 与模板工具包(如 TT2 和代码示例)一起使用的最佳实践/指南供我利用?
你看过Cro::WebApp了吗?
见https://github.com/jnthn/cro-webapp
--
也可以使用"Template::Mojo"。
这是一个 Cro 服务器:
use Cro::HTTP::Router;
use Cro::HTTP::Server;
use Template::Mojo;
my $tmpl = slurp 'views/template.tt';
my $t = Template::Mojo.new($tmpl);
my $application = route
{
get -> ''
{
content 'text/html', $t.render({ title => "AAA",
type => "aaa",
mode => "AAAaaaAAA" });
}
}
my Cro::Service $hello = Cro::HTTP::Server.new:
:host<localhost>, :port<10000>, :$application;
$hello.start;
react whenever signal(SIGINT) { $hello.stop; exit; }
模板文件如下所示:
% my %h = @_;
% my $title = %h<title>;
% my $type = %h<type>;
% my $mode = %h<mode>;
%
<html>
<head>
<title><%= $title %></title>
</head>
<body>
<h1><%= $type %></h1>
<p><%= $mode %></p>
<body>
</html>
服务器代码可以做一点改造(受 Bailador 启发)。添加此代码:
sub template ($template, %values)
{
my $tmpl = slurp "views/$template";
my $t = Template::Mojo.new($tmpl);
return content 'text/html', $t.render(%values);
}
并更改 "get":
get -> ''
{
template 'template.tt',
{
title => "AAA",
type => "aaa",
mode => "AAAaaaAAA"
};
}
我正在考虑使用perl6 和Cro 建立一个带有文本内容的网站。是否有关于将 Cro 与模板工具包(如 TT2 和代码示例)一起使用的最佳实践/指南供我利用?
你看过Cro::WebApp了吗?
见https://github.com/jnthn/cro-webapp
--
也可以使用"Template::Mojo"。
这是一个 Cro 服务器:
use Cro::HTTP::Router;
use Cro::HTTP::Server;
use Template::Mojo;
my $tmpl = slurp 'views/template.tt';
my $t = Template::Mojo.new($tmpl);
my $application = route
{
get -> ''
{
content 'text/html', $t.render({ title => "AAA",
type => "aaa",
mode => "AAAaaaAAA" });
}
}
my Cro::Service $hello = Cro::HTTP::Server.new:
:host<localhost>, :port<10000>, :$application;
$hello.start;
react whenever signal(SIGINT) { $hello.stop; exit; }
模板文件如下所示:
% my %h = @_;
% my $title = %h<title>;
% my $type = %h<type>;
% my $mode = %h<mode>;
%
<html>
<head>
<title><%= $title %></title>
</head>
<body>
<h1><%= $type %></h1>
<p><%= $mode %></p>
<body>
</html>
服务器代码可以做一点改造(受 Bailador 启发)。添加此代码:
sub template ($template, %values)
{
my $tmpl = slurp "views/$template";
my $t = Template::Mojo.new($tmpl);
return content 'text/html', $t.render(%values);
}
并更改 "get":
get -> ''
{
template 'template.tt',
{
title => "AAA",
type => "aaa",
mode => "AAAaaaAAA"
};
}