先看一个例子:

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;

效果如下:

最新文章

  1. C#语言实现定时开启或禁用网卡小程序
  2. cocos2d-x 3.0 版本 骨骼动画设置shader
  3. Page Visibility(页面可见性) API介绍、微拓展[转]
  4. Vijos 1055 奶牛浴场
  5. movebase导航
  6. hdu4497 GCD and LCM ——素数分解+计数
  7. 移动端自动化环境搭建-python的安装
  8. myeclipse 2014新建maven web 项目步骤
  9. 考上好大学,然后进入IT行业是穷人孩子晋级中产的唯一出路?
  10. eclipse启动出现“An Error has Occurred. See the log file”解决方法
  11. bzoj1038: [ZJOI2008]瞭望塔
  12. XAML 概述
  13. Java Builder模式 体验(二)
  14. 学习笔记--C#特性Attribute(一)
  15. &gt;&gt; 关于计算机有符号数的符号拓展(sign extension)问题
  16. Intellij IDEA超好用的快捷键
  17. rpmbuild打包php
  18. 【论文学习】YOLO9000: Better,Faster,Stronger(YOLO9000:更好,更快,更强)
  19. Android之 看“马达”如何贯通Android系统 (从硬件设计 --&gt; 驱动 --&gt; HAL --&gt; JNI --&gt; Framework --&gt; Application)
  20. group by having 和where区别联系

热门文章

  1. /var/redis/run/redis_6379.pid exists, process is already running or crashed的解决办法
  2. Hibernate使用详解(一)
  3. [OS] CPU调度
  4. JDK各个版本比较 JDK5~JDK9
  5. URAL.1033 Labyrinth (DFS)
  6. UVA.10881 Piotr's Ants (思维题)
  7. AOJ.176 两数组最短距离 (乱搞题)
  8. 关于EK Dicnic
  9. AES encryption of files (and strings) in java with randomization of IV (initialization vector)
  10. qt4+vs2010 环境搭建