• 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;

     

     

    效果如下:

     

     

     

     

  • 相关阅读:
    gridview展示行号
    DateEdit如果开启Vista模式并显示日期+时间模式
    DevExpress GridView 添加和设置右键菜单
    C# WinForm实现粘贴图片到PictureBox及复制PictureBox中的图片
    dll反编译工具(ILSpy)的使用
    Dev的双击Gridview的DoubleClick
    SQL Server日期时间格式转换字符串详解
    LabelControl文本居中显示
    C# winform 判断click事件点击的是左键还是右键
    Winform窗体状态的判断及调用打开的窗体的方法
  • 原文地址:https://www.cnblogs.com/perl6/p/6977270.html
Copyright © 2020-2023  润新知