博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对kingthy创作的Vtemplate模板引擎的使用心得
阅读量:5288 次
发布时间:2019-06-14

本文共 1588 字,大约阅读时间需要 5 分钟。

       首先,还是要真心的感谢kingthy能为我们提供Vtemplate这么一款优秀的模板引擎...

       本篇文章主要记录自己对该模板引擎的初次的体会.  如果各位看官觉得有问题,欢迎指出..

       (注:此类模板引擎和我们.net程序员经常接触的.aspx这套引擎针对的场景一般有些区别,所以暂且不谈与.aspx的比较)

       在使用过程中,暂且觉得Vtemplate至少有以下几个明显的优势:

           1.>语法简单,基本上能接受html标签就可以接受该模板引擎的大部分控制元素.(这一点有时相当重要,因为用户不都是懂后台的程序员)

           2.>开源,代码可读性强.(本人不是什么牛人,但稍微接触一段时间后,即可从标签基类派生一些自定义的标签)

           3.>性能良好,可维护性强(记得部分开源产品,对标签,属性的处理是每一个都进行全文的正则表达式处理,来回倒腾)

           4.>支持文档丰富,也存在QQ群.

        下面举一个自己扩展的例子:

              a.>来自织梦的一个标签应用示例:

              {dede:booklist row='12' booktype='-1' orderby='lastpost' author='' keyword=''}//织梦的用户很多,习惯这种简单的调用.也是我的目标

                 <a href='[field:bookurl /]'>[field:bookname /]</a><br />
              {/dede:booklist}       

              b.>来自Vtemplate的类似标签应用示例(系统默认的方案)

                <vt:function var="hotlinks" method="GetLinkList" type="$testLinkListObject" args="4" />//声明变量并规定值得获取方式

               <vt:foreach from="$hotlinks" item="link">
                   <a href='{$#.link.url}'>{$#.link.name}</a>&nbsp;&nbsp;&nbsp;
                </vt:foreach>

               c.>利用Vtemplate提供的重写与派生,改造后的标签应用示例

                 <vt:linklist  rows="2" item="link">   //可以让用户不考虑使用哪个类的实例,哪个方法,以及单独定义一个function区域规定foreach的from变量.

                  <a href='{$#.link.url}'>{$#.link.name}</a>&nbsp;&nbsp;&nbsp;
                 </vt:linklist>

           刚开始以为很复杂,后来稍微看了Vtemplate作者的源代码,发现,其实系统已经给我们提供了很多。我们要做的基本上就是如下所述:

               1.>在TagFactory.FromTagName方法中加上一个switch的case,返回你的一个自定义Tag类的实例.

               2.>假设你要给书本定义个标签,因为书本有作者,价格,出版社这些信息,所以标签就会有这些属性.你可以在booklist标签中定义.

                    这个booklist需要继承自Tag.   一般情况下,为了圈定呈现的范围,我们这标签肯定是有结为标签的,重写IsSingleTag为false.

                3.>迭代属性定义中,你可以参考foreach标签,保留其中的Item,Index,这两个会在循环用到的.

                4.>在呈现标签元素的方法RenderTagData中,你可以把foreach中取自From规定变量的值改为自己实现的一个对象,这个对象应该实现

                    IEnumerable接口.

                接下来你可以测试了,你会发现无论定使用几次,这个自定义的标签,都会工作良好,不过请注意其中的item属性不可少. .

            

转载于:https://www.cnblogs.com/taohuadaozhu/archive/2013/01/06/2846963.html

你可能感兴趣的文章
python-study-06
查看>>
IDEA配置maven中央库
查看>>
C# 基础
查看>>
mybatis进阶-5resultMap总结
查看>>
【OOAD】OOP的主要特征
查看>>
MapReduce进行本地的单词统计
查看>>
HTTP 状态码
查看>>
【转】详解硬盘MBR
查看>>
bashrc 文件命令
查看>>
hdu4271 Find Black Hand 2012长春网络赛E题 最短编辑距离
查看>>
V7000初始化
查看>>
animate.css的使用
查看>>
Struts2 注释类型
查看>>
JSP中EL表达式语言不能使用的解决方法
查看>>
做XH2.54杜邦线材料-导线
查看>>
如何刻录cd音乐
查看>>
Codeforces Round #318(Div 1) 573A, 573B,573C
查看>>
51Nod 1091 线段重叠 贪心 区间重叠
查看>>
[翻译] NimbusKit
查看>>
POJ 2196
查看>>