Можно ли использовать TT2 с Cro? - PullRequest
0 голосов
/ 23 декабря 2018

Я думаю об использовании perl6 и Cro для создания веб-сайта с текстовым контентом.Есть ли рекомендации / рекомендации по использованию Cro с набором шаблонов, таким как TT2, и примеры кода, которые я могу использовать?

1 Ответ

0 голосов
/ 25 декабря 2018

Вы смотрели на 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"
    };
  }
...