首页 > 编程 > PHP > 正文

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

2020-03-22 17:17:12
字体:
来源:转载
供稿:网友
  • 首先在写这篇文章前,先和大家分享一句话:

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

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

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

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

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

    所有列出以下功能点:

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

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

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

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


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

    前台显示:

    {$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个字符...]

    {$namehtmlencode=“true”}[不解析html标签]

    {$nameremovehtml=“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:ifvar="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_functionname="王二"}

    {test_functionname="张三"}

    输出结果:

    王二你好!张三你好!

    后台代码:
    $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/

    欢迎拍砖,欢迎批评!

    PHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表