Perl6 Bailador框架(7):模版编写

先看一个例子:

use v6;
use Bailador;

my $data = '
  <form action="", method="get">
  <input name="text" type="text"/>
  <input type="submit" submit="sumbit" />
  </form>
';

get '/' => sub {
  $data~request.params<text>;
}

baile;

一个变量保存html源码, 用request.params<name>获取用户输入, 再连接后输出

 

那什么叫模板呢, 个人觉得, 一个是为了代码重用, 二个是我们可以在模板文件中嵌入perl语句

 

一般来说, 直接引用模板用如下语法就行:

template 'index.tm'

 

默认地, perl6中的bailador把模板自动放到当前脚本的views下面(没有这个文件你要自行创建, 再把模板文件丢进去)

 

看下面的template与slurp区别:

template 'index.tm';
slurp 'index.tm'

用slurp导入时, 里面的perl语句不会执行, 用template导入的可以执行

 

在模板文件中(文件一般来说用.tm结尾), 如果要引用perl6语法, 可用如下方式:

% for %*ENV  -> $values {
        "<b><%= $values%></b>"      
%}

语句用 % 号开头, 要输出变量, 用 <%= $values %> 来内插输出

 

 

 

下面是是一个简单计算器

 

foot.tm模板源码如下:

<br />
<hr>
<table><font color='red'><b>The Env:</b></font>
%for %*ENV.keys -> $key {
<tr><td><%= $key %></td><td><%= %*ENV{$key} %></td></tr>
%}
</table>
<center><b><font color='green'>Power by: FireC@t</font></b></center>

 

计算器的test.html源码如下:

 

<html>
  <head><title>Bailador</title></head>
<body>
<form action="" method="get">
    <h1>Bailad<font color='green'>or</font></h1>
    <input type='text' name='number1' />
    <select name='opt'>
      <option value ="+" >+</option>
      <option value ="-" >-</option>
      <option value="*" >*</option>
      <option value="/" >/</option>
   </select>
   <input type='text' name='number2' />
    <input type='submit' value='Go' /><br />

</form>
<body>

 

主页test.p6脚本源码:

use v6;
use Bailador;


get '/' => sub {
  my $html = slurp 'views/test.html';
  my $foot = template 'foot.tm';

  #my $foot = template 'foot.tm';
  #注意, 这里如果用slurp的话, foot.tm中的代码不会解释
  #template能解释里面的perl代码

  my $number1 = request.params.<number1> // '';
  my $number2 = request.params.<number2> // '';
  my $opt = request.params.<opt> // '';
  #判断不为空值
  if !$number1 || !$number2 {
    return $html~'Please Input Number1/Number2'~$foot;
  }
  #判断是否出错
  my $sum;
  given $opt {
    try {
      when '+'  {$sum = $number1+$number2;}
      when '-'  {$sum = $number1-$number2;}
      when '*'  {$sum = $number1*$number2;}
      when '/'  {$sum = $number1/$number2;}
      CATCH {
        return $html~'Something Input Error'~$foot;
      }
    }
  }
   $html~$number1~$opt~$number2~'='~$sum~$foot;

}

baile;

 

 

效果如下:

 

 

 

 

 

posted on 2017-06-10 03:27  Perl6  阅读(287)  评论(0编辑  收藏  举报

导航