HTML::KTemplate模块使用指南[一]
介绍HTML::KTemplate模块是由Kasper Dziurdz先生开发一款功能强大的HTML代码解析的模块,模块功能非常强大,功能灵活,而不臃肿,这里不做过多的评价,使用后我想大家就会赶到这个模块的强大语法了以及功能了。
安装方法:
安装程序会把HTML::KTemplate安装到perl模块库中的HTML目录下 :
1.Windows下安装方法:
ppm> search HTML::KTemplate
Searching in Active Repositories
1. HTML-KTemplate [1.32] Perl module to process HTML templates.
ppm> install HTML-KTemplate
c:\perl –e “use HTML::KTemplate;”
#测试是否安装上了HTML::KTemplate,如若安装上什么也不会显示,如若没有安装上,就会抛出错误信息。
2.Linux下安装方法:
[
root@bloves.org]#wget
http://search.cpan.org/CPAN/auth ... emplate-1.33.tar.gz
[
root@bloves.org]#tar -vzxf HTML-KTemplate-1.33.tar.gz
[
root@bloves.org]#cd HTML-KTemplate-1.33
[
root@bloves.org]#perl Makefile.PL
[
root@bloves.org]#imake test
[
root@bloves.org]#make install
[
root@bloves.org]# perl –e “use HTML::KTemplate;” #测试
使用方法:#下面使用的例子基本上都是copy说明文件中的。
<html>
<head><title>[% TITLE %]</title>
<body>
Hello! [% TEXT %]<p>
<!-- BEGIN LOOP --> #循环开始,名字为LOOP,这个名字在程序中需要使用
[% TEXT %]<br> #循环中需要替换的变量
<!-- END LOOP --> #结束循环,必须加上这个,否则KTemplate会抛出错误,并停止运行.
</body>
</html>
解析上面的Html模板:
#!/usr/bin/perl -w
use HTML::KTemplate;
$tpl = HTML::KTemplate->new('path/to/templates');
#设定根目录,这个是必须的,否则KTemplate在开发文件时会出错。
$tpl->assign( TITLE => 'Template Test Page' );
#给变量赋值。
$tpl->assign( TEXT => 'Some welcome text ...' );
#给变量赋值
foreach (1 .. 3) {
#开始循环.循环的块是LOOP块
#替换LOOP块中的[% TEXT%]为”Just a test …”;
$tpl->assign( LOOP,
TEXT => 'Just a test ...',
);
}
#处理模板文件
$tpl->process('template.tpl');
print "Content-type: text/html\n\n";
$tpl->print(); #输出显示
多层循环嵌套结构:
有时开发web程序时,需要一些嵌套的模板结构,KTemplate模块的嵌套循环功能真是为这个应用准备的。
在KTemplate模块中有全局变量和局部变量之分,所以在使用的时候需要小心。
下面是一个例子:
<!-- BEGIN LOOP_ONE -->
<p>bloves</p>
<!-- BEGIN LOOP_TWO -->
ID:[% VAR %]<br>[% title %]
<!-- END LOOP_TWO -->
<p>royce</p>
<!-- END LOOP_ONE -->
use HTML::KTemplate;
my $Template = HTML::KTemplate->new(root=>'e:/modperl/perl/bin/');
for(1..3){
$Template->block('LOOP_ONE');
for(1..4){
$Template->block('LOOP_ONE.LOOP_TWO');
#当嵌套循环时内层循环需要提供上一层的符号,也就是我们这里的LOOP_ONE.LOPP_TWO这样的形式,这里是说我们的LOOP_TWO循环是嵌套在LOOP.ONE中。
$Template->assign(VAR => 'txt',title=>'bloves');
#注意上面的语句,因为在单循环中,在赋值循环中赋值需要提供循环块的符号(这里是LOOP_TWO).但在多层循环中就不可以这样,因为KTemplate按就近原则取得需要赋值的变量。
#$Template->assign(title=>'bloves');
}
$Template->block();
}
$Template->process("test.html");
print "Content-type: text/html\n\n";
$Template->print();
这次就先到这吧,时间不早了,改天继续写。包括缓存的支持等,甚至分析这个原代码。这个程序写的非常漂亮,俺比较喜欢。
当然你可以查看这个模块的文档:
http://search.cpan.org/~kasper/H ... KTemplate.pm#AUTHOR
_________________