php_smarty模板引擎与.NET_VTemplate模板引擎对比

首先在写这篇文章前,先和大家分享一句话:

“现在能做什么就认真的去做吧,未来的事情不用担心了”。

 

哈,这句话,其实真的是想告诉自己而已,在博客上写着PHPer,那个时候还真的是以为会一直写PHP,没想到,今天改成了ASP.NET。

好,其他就不说了,说不定以后也有PHPer会转到ASP.NET或者ASP.NET转到PHP也不一定哈。所以,今天写下这篇文章,让对smarty非常熟悉的我和VT模板来对比对比。

我一直相信,学新的技术语言只有在对比自己非常熟悉的语言之后学的会更快,更有印象。

 

当然了这两个都只是一个模板引擎而已,技术难点并不会特别复杂。而他们共同的目的是把后台的数据显示到前台展示页面上。

所有列出以下功能点:

1、单个变量输出在页面上,并且有一些格式上的处理。例如:时间格式

2、列表变量或者数组变量输出在页面上,进行foreach输出列表。

3、通过模板引擎调用后台方法,取得结果显示。

对于我来说,只要明白这些,几乎能在一个项目中很好的发挥作用了。如有遗漏的,欢迎评论拍砖。谢谢。

 


PHP之Smarty
ASP.NET之VTemplate
1、单个变量输出在页面上,并且有一些格式上的处理。例如:时间格式

前台显示:

{$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开始)

 前台显示:

{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/

 

欢迎拍砖,欢迎批评!

posted @ 2014-04-21 18:06  Josh_Chen  阅读(1485)  评论(2编辑  收藏  举报