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;
效果如下:

Perl6 Bailador框架(7):模版编写的更多相关文章
- Perl6 Bailador框架(5):利用正则匹配路径
use v6; use Bailador; =begin pod 我们在路径设置上, 可以利正则表达式捕获的字符串作为子例程参数 =end pod get '/perl6/(.+)' => su ...
- Perl6 Bailador框架(8):自定义400/500
第一种方法, 直接写在源码中: use Bailador; get '/' => sub { '<h1>hello, Bailador</h1>'; } get '/te ...
- Perl6 Bailador框架(6):获取用户输入
use v6; use Bailador; get '/' => sub { ' <html> <head><title></title>< ...
- Perl6 Bailador框架(4):路径匹配
use v6; use Bailador; =begin pod /:one/:two/:....路径选择 这个路径, 用/分隔 每个/分隔一个, 如果你只设置两个(/admin/login),时, ...
- Perl6 Bailador框架(3):路径匹配
use v6; use Bailador; =begin pod 注意的是, 当/:one设置时 虽然你有/admin或/about, 但这个/:one不会跟现有的匹配 只跟没有的匹配: 也就是说, ...
- Perl6 Bailador框架(2):路径设置
use v6; use Bailador; =begin pod get表示是get发送 post表示是post发送 get/post 后面的 '/name' 表示是路径 => sub {} 是 ...
- Perl6 Bailador框架(1):开始
use v6; use Bailador; get '/' => sub { '<h1><center>Hello, World</center></h ...
- 使用Spring注解来简化ssh框架的代码编写
目的:主要是通过使用Spring注解的方式来简化ssh框架的代码编写. 首先:我们浏览一下原始的applicationContext.xml文件中的部分配置. <bean id="m ...
- RobotFramework自动化测试框架-使用Python编写自定义的RobotFramework Lib
使用Python构建Lib工程 可以用来开发Python Lib的IDE工具有很多,常见的有Pycharm,Eclipse with PyDev插件等,而且在RobotFramework官网中也已经提 ...
随机推荐
- K-means聚类算法与EM算法
K-means聚类算法 K-means聚类算法也是聚类算法中最简单的一种了,但是里面包含的思想却不一般. 聚类属于无监督学习.在聚类问题中,给我们的训练样本是,每个,没有了y. K-means算法是将 ...
- 【bzoj2190】[SDOI2008]仪仗队 欧拉函数
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...
- 【hackerrank】Week of Code 30
Candy Replenishing Robot Find the Minimum Number 直接模拟 Melodious password dfs输出方案 Poles 题意:有多个仓库,只能从后 ...
- BZOJ3435 & 洛谷3920 & UOJ55:[WC2014]紫荆花之恋
https://www.lydsy.com/JudgeOnline/problem.php?id=3435 https://www.luogu.org/problemnew/show/P3920 ht ...
- 纯CSS实现的风车转动效果特效演示
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Multi-target tracking with Single Moving Camera
引自:http://www.eecs.umich.edu/vision/mttproject.html Wongun Choi, Caroline Pantofaru, Silvio Savarese ...
- 洛谷P4135 作诗 (分块)
洛谷P4135 作诗 题目描述 神犇SJY虐完HEOI之后给傻×LYD出了一题: SHY是T国的公主,平时的一大爱好是作诗. 由于时间紧迫,SHY作完诗之后还要虐OI,于是SHY找来一篇长度为N的文章 ...
- mybatis <where>、<set>、<trim>、<sql>、<foreach>标签的使用
转:http://www.cnblogs.com/lixiujie/p/5766669.html <resultMap>标签的使用:这个类似于hibernte用于映射我们创建的vo对象与数 ...
- DFS搜索题素数环
素数环: 输入整数1,2,3,4,5,···,n组成一个环,使得相邻两个整数之和均为素数. 输出时从整数1开始逆时针排列.同一个环应恰好输出一次.n<=16. Sample: input: 6 ...
- shell脚本实现轮询查看进程是否结束
功能需求: 一个shell脚本,为了使用多进程,启动十几个后台运行的程序,为了防止脚本比后台进程提前结束造成不可预估的影响,现要判断是否多个后台执行的已知进程已经结束,并在所有进程结束后做出相应操作. ...