首先在写这篇文章前,先和大家分享一句话:
“现在能做什么就认真的去做吧,未来的事情不用担心了”。
哈,这句话,其实真的是想告诉自己而已,在博客上写着PHPer,那个时候还真的是以为会一直写PHP,没想到,今天改成了ASP.NET。
好,其他就不说了,说不定以后也有PHPer会转到ASP.NET或者ASP.NET转到PHP也不一定哈。所以,今天写下这篇文章,让对smarty非常熟悉的我和VT模板来对比对比。
我一直相信,学新的技术语言只有在对比自己非常熟悉的语言之后学的会更快,更有印象。
当然了这两个都只是一个模板引擎而已,技术难点并不会特别复杂。而他们共同的目的是把后台的数据显示到前台展示页面上。
所有列出以下功能点:
1、单个变量输出在页面上,并且有一些格式上的处理。例如:时间格式
2、列表变量或者数组变量输出在页面上,进行foreach输出列表。
3、通过模板引擎调用后台方法,取得结果显示。
对于我来说,只要明白这些,几乎能在一个项目中很好的发挥作用了。如有遗漏的,欢迎评论拍砖。谢谢。
前台显示:
{$name}
{$name|capitalize} [首字符大写]
{$name|count_characters} [字符计数]
{$nowTime|date_format:"%H:%M:%S"} [格式化日期]
{$name|lower} [小写]
{$name|strip} [去除(多余空格)]
{$name|truncate:30:"..."} [截取后多出的改成...]
{$name|strip_tags} [不解析html标签]
后台代码:
$smarty->assign("name", "JoshChen");
$smarty->assign("nowTime", time());
前台显示:
{$name}
{$name.length} [字符计数]
{$nowTime format='yyyy-MM-dd HH:mm'} [格式化日期]
{$name length=30} [截取至30个字符...]
{$name htmlencode=“true”} [不解析html标签]
{$name removehtml=“true”} [去除html标签]
后台代码:
this.Document.Variables.SetValue("name","JoshChen");
this.Document.Variables.SetValue("nowTime", time());
2、if语句处理 (smarty处理和后台是非常相似的,而VT模板引擎是有带compare的表达式属性。)前台显示:
{if $age == 18}
你是18岁!
{else}
你不是18岁!
{/if}
后台代码:
$smarty->assign("age", 18);
前台显示:
<vt:if var="age" value="18" compare="=">
你还是18岁哦!
<vt:else>
你不是18岁了!
</vt:if>
后台显示:
this.Document.Variables.SetValue("age", 18);
3、列表变量或者数组变量输出在页面上,进行foreach输出列表。(smarty的key的值是从0开始,VT引擎的key的值是从1开始)
前台显示:
class="PROGRAMLISTING">{foreach from=$arr_name item=var_name key=i} {$i}、name: {$var_name}<br>
{/foreach}
输出:
0、name:王二
1、name:张三
2、name:李四
后台代码:
$arr = array(" 王二","张三","李四");
$smarty->assign("arr_name", $arr);
前台显示:
<vt:foreach from="$arr_name" item="var_name" index="i"> {$:i}、name: {$:var_name}<br>
</vt:foreach>
输出结果:
1、name:王二
2、name:张三
3、name:李四
后台代码:
String[] arr = new String[]{"王二","张三","李四"};
this.Document.Variables.SetValue("arr_name", arr);
4、通过模板引擎调用后台方法,取得结果显示。(在这里的区别是,smarty调用方法后,会直接输出结果。而VT引擎则是给一个变量赋值)前台:
{test_function name="王二"}
{test_function name="张三"}
输出结果:
王二你好!张三你好!
后台代码:$smarty->register_function("test_function", "print_name_date");
function print_name_date ($name) {前台显示
return $name . "你好!";
}
<vt:function var='#.val' method="text_function" type="$Page" args="王二"></vt:function>
{$#.val}
输出结果:
王二你好!
后台代码:
public String text_function(String name)
{
name = name + "你好!";
return name;
}
4、当然以我在校学习的经验,老师的一句话确实记忆很深刻,了解了一个语法的增删查改,你几乎是可以做一个简单的系统了。像这个模板引擎,也是为了区分后台和前台的配合以及前台页面的整洁性,所以不会特别复杂,主要处理都是显示变量,判断语句,和循环数据显示。希望能够帮助学过smarty或者学过VT模板其中之一的同学,来了解另一种模板引擎。这里也是我个人觉得比较重要的,会了这些几乎项目就不成问题了。
具体的话,想深入的同学可以看看手册:
smarty手册:http://www.php100.com/manual/smarty/
VT模板引擎教程:http://www.cnblogs.com/kingthy/tag/vtemplate/
欢迎拍砖,欢迎批评!