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

    欢迎拍砖,欢迎批评!

  • 相关阅读:
    vscode vue代码提示
    解决VMware nat service等服务不能启动
    vscode突然无法格式化代码
    【必看精贴】微信网页分享开发,配置本地调试
    ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'name' of undefined
    python使用mysql数据库
    pycharm下载第三方包
    canvas绘制网络字体
    解决npm 下载速度慢的问题
    【已解决】canvas跨域问题
  • 原文地址:https://www.cnblogs.com/cchulong/p/3636673.html
Copyright © 2020-2023  润新知