perl的HTML::Template模板技术
近来要做web应用中,研究了一下perl的模板技术,从没有写过web。真是痛苦。在编程技术中模板(Template)技术是非常常用的一种技术,这样可以分离美工和程序员。。也就是所谓的MVC.
模板原理其实很简单,先做好html的样本,然后用程序读进来,在插入变量。最后输出。这样就分开了html和程序本身。
在perl中就是用HTML::Template是个很常用的模块,用来实现模板技术。在HTML::Template不但可以插入变量,还可以放条件,判断和文件插入。
HTML::Template模块的基本标记
这个模块有一些自己的HTML的标记。如<tmp_var>,<tmpl_if>,</tmpl_if>,<tmpl_loop>等,
以下是引用片段: <TMPL_VAR NAME=”TEST”> # 单个变量 <TMPL_LOOP NAME=”TEST”> #循环 <TMPL_IF NAME=”TEST”> # 条件语句 <TMPL_ELSE> # 条件语句 <TMPL_UNLESS NAME=”TEST”> # 条件语句 <TMPL_INCLUDE NAME=”temp2.html”> # 插入 |
这些标记可有二种写法,<tmpl_var name=parameter>和<tmpl_var parameter>,这个看你的喜好了.
简单的例子
1 2 3 4 5 6 7 8 |
#!/usr/bin/perl use strict; use warnings; use HTML::Template; my $html = new HTML::Template ( filename=>"html.tmpl"); #new一个对象出来。其中需要指定一个html的文件 $html->param( TEST => 'hello!' ); # 给html标准替换成这个变量的值 print $html->output; #html的输出 |
html.tmpl文件的内容
1 2 3 4 5 |
<html><head> <title>HTML::Template test</title> </head><body> <p>TEST:<TMPL_var NAME="TEST"> </p> </body></html> |
下面对变量的命令小小的介绍一下
我现在分开做三部分写,第一部分写perl中解析html的写法,另一部分写html中这个模块的标记是怎么样写的,以这样来分别介绍常用的一些标记用法
TMPL_VAR
普通变量的插入.记的给内容存成*.tmpl的文件.TMPL_VAR是做为Template Variable的意思。这样是为了和html分开.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#perl中的写法. $html->param( name => [ {name => 'tom', age => '21'}, {name => 'fukai', age => '25'}, ]); #html中的内容 <ul> <TMPL_LOOP NAME="name"> <li><TMPL_VAR NAME="name">:<TMPL_VAR NAME="age"></li> </TMPL_LOOP> </ul> #html输出 <ul> <li>tom:21</li> <li>fukai:25</li> </ul> |
注,上面可以在后面加入escape=html这样来做url的编码。如<TMPL_VAR TEST escape=html>.
TMPL_LOOP
循环这个是用在重复输出内容到一个地方。如表格
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#perl中的写法. $html->param( name => [ {name => 'tom', age => '21'}, {name => 'fukai', age => '25'}, ]); #html中的内容 <ul> <TMPL_LOOP NAME="name"> <li><TMPL_VAR NAME="name">:<TMPL_VAR NAME="age"></li> </TMPL_LOOP> </ul> #html输出 <ul> <li>tom:21</li> <li>fukai:25</li> </ul> |
注,上面最开始的name是指参数的名字. TMPL_LOOP 和 /TMPL_LOOP 之间是重复的内容.
TMPL_IF, TMPL_ELSE, TMPL_UNLESS
条件语句,这些和perl基本的语法一样.这样会在不同的情况插入不同的内容.
1 2 3 4 5 6 7 8 9 10 |
#perl中的写法. $html->param( test => 1); #html <TMPL_IF NAME = "test"> <p>这个test=>1</p> </TMP_IF> #html输出 <p>这个test=>1的</p> |
TMPL_INCLUDE
插入包含另一个html的文件.
这个主要是在一个html中插入另一个html
用法直接在html中写。自然会解析成别的一个html的内容到当前的网页中,这个perl中不用写什么
<TMPL_INCLUDE NAME="temp2.html">
建议继续学习:
- perl更新/修改/删除文本文件内容 (阅读:9423)
- perl大牛flw传说 (阅读:6506)
- perl模块Getopt::Std用法及实例-从命令行读取参数模块 (阅读:5867)
- [Perl] Template::Toolkit 模板技术. (阅读:5360)
- 在perl中连接和使用sqlite做数据存储 (阅读:5040)
- Perl命令行常见用法及技巧 (阅读:4792)
- perl模块之MIME::Lite发送有附件的邮件 (阅读:4432)
- perl的expect使用方法,实现非交互式登录。 (阅读:4478)
- Perl 倒行分析文件方法。perl读文本文件,从末尾往前读. (阅读:4424)
- perl大牛唐凤传说 (阅读:4264)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:扶凯 来源: 扶凯
- 标签: perl 模板
- 发布时间:2009-12-14 22:56:33
- [70] Go Reflect 性能
- [68] 如何拿下简短的域名
- [65] Oracle MTS模式下 进程地址与会话信
- [63] 图书馆的世界纪录
- [62] IOS安全–浅谈关于IOS加固的几种方法
- [61] 【社会化设计】自我(self)部分――欢迎区
- [59] android 开发入门
- [54] 视觉调整-设计师 vs. 逻辑
- [49] 界面设计速成
- [48] 读书笔记-壹百度:百度十年千倍的29条法则