Perl6 Bailador框架(7):模版编写
2024-08-26 00:32:20
先看一个例子:
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;
效果如下:
最新文章
- C#语言实现定时开启或禁用网卡小程序
- cocos2d-x 3.0 版本 骨骼动画设置shader
- Page Visibility(页面可见性) API介绍、微拓展[转]
- Vijos 1055 奶牛浴场
- movebase导航
- hdu4497 GCD and LCM ——素数分解+计数
- 移动端自动化环境搭建-python的安装
- myeclipse 2014新建maven web 项目步骤
- 考上好大学,然后进入IT行业是穷人孩子晋级中产的唯一出路?
- eclipse启动出现“An Error has Occurred. See the log file”解决方法
- bzoj1038: [ZJOI2008]瞭望塔
- XAML 概述
- Java Builder模式 体验(二)
- 学习笔记--C#特性Attribute(一)
- >;>; 关于计算机有符号数的符号拓展(sign extension)问题
- Intellij IDEA超好用的快捷键
- rpmbuild打包php
- 【论文学习】YOLO9000: Better,Faster,Stronger(YOLO9000:更好,更快,更强)
- Android之 看“马达”如何贯通Android系统 (从硬件设计 -->; 驱动 -->; HAL -->; JNI -->; Framework -->; Application)
- group by having 和where区别联系
热门文章
- /var/redis/run/redis_6379.pid exists, process is already running or crashed的解决办法
- Hibernate使用详解(一)
- [OS] CPU调度
- JDK各个版本比较 JDK5~JDK9
- URAL.1033 Labyrinth (DFS)
- UVA.10881 Piotr's Ants (思维题)
- AOJ.176 两数组最短距离 (乱搞题)
- 关于EK Dicnic
- AES encryption of files (and strings) in java with randomization of IV (initialization vector)
- qt4+vs2010 环境搭建