VTemplate模板引擎的使用--入门篇
1、什么是VTemplate模板引擎?
2、怎样使用VTemplate模板引擎?
第1步: 下载VTemplate模板引擎的最新库文件(从这里下载),下载回来后将库文件引入到你的项目中。
第2步: 针对你的目的设计好VT模板(如HTML页面)。
第3步: 根据VT模板在代码里实例化模板引擎对象,并处理相关的逻辑数据。
第4步: 输出模板引擎的最终呈现数据(直接显示或存储到文件)
3、如何设计VT模板?
设计VT模板其时就是在于如何设计VT模板元素,类似于你设计HTML页面时如何设计那些HTML标签元素一样。而设计VT模板,则主要是将那些你觉得应该要时常改变数据的地方设计为VT模板元素。比如针对单数据变动的地方(如文章的标题、内容),则设计变量元素;针对列表数据变动的地方(如文章排行、栏目列表等数据),则设计循环元素(for或foreach标签元素)
注:关于VT模板元素请参考这文章的第3点以下的内容。
下面让我们来做一个例子,设计一个类似于博客园中的日志页面(也就是你现在看到的这个页面)的VT模板。页面效果如下:
日记的内容
评论列表
页面HTML代码如下:
<div class=”bloglog”><strong>日记的标题区</strong>
<hr class=”blogsplit”/>
日记的内容
<div style="margin-bottom: 20px" align="right">posted @ 2008-06-19 10:31 Kingthy 阅读(1) 评论(2)</div>
<strong>评论列表</strong> <hr class=”blogsplit”/>
<div class=”blogcomment”>#1楼 2008-06-19 11:14 | 张三 </div>
<div style="padding-left: 20px">沙发</div>
<hr class=”blogsplit”/>
<div class=”blogcomment”>#2楼 2008-07-19 11:14 | 李四 </div>
<div style="padding-left: 20px">顶楼主</div>
<hr class=”blogsplit”/>
<div class=”blogcomment”>#3楼 2008-08-19 11:14 | 王五 </div>
<div style="padding-left: 20px">板凳啊</div> </div>
观察上面HTML代码中已被加背景色的区域,对于博客系统来说,显示博客日记的页面大概需要变动的地方就只有上面已加背景色的地方,因此只要将上面变动的地方设计为VT模板元素即可。对于黄色区域,只是单数据变动地方,则只要设计为变量元素;对于绿色区域,是显示评论数据列表,所以需要设计为循环元素,如用foreach标签元素。最终设计好的VT模板如下(各位可上下对比一下黄色与绿色背景区域的不同):
<div class=”bloglog”><strong>{$:blogarchive.title htmlencode=”true”}</strong>
<hr class=”blogsplit”/>
{$:blogarchive.content}
<div style="margin-bottom: 20px" align="right">posted @ {$:blogarchive.time format=”yyyy-MM-dd HH:mm”} {$:blogarchive.author htmlencode=”true”} 阅读(1) 评论(2)</div>
<strong>评论列表</strong> <vt:foreach from=”$blogarchive.comments” item=”#.comment” index=”#.floor”> <hr class=”blogsplit”/>
<div class=”blogcomment”>#{$:#.floor}楼 {$:#.comment.time format=”yyyy-MM-dd HH:mm”} | {$:#.comment.author htmlencode=”true”} </div>
<div style="padding-left: 20px">{$:#.comment.content htmlencode=”true”}</div>
</vt:foreach> </div>
4、怎么使用VT模板?
利用我们上面设计好的VT模板,我们实例化VTemplate模板引擎的里的模板文档对象TemplateDocument。
假如我们的VT模板保存在blogarchive.html文件里,则实例化代码如下:
或者我们从缓存模板里构造实例:
到此,我们就可以使用document对象来操作VT模板变量里的元素对象了,比如对VT模板里红色的blogarchive变量赋于某篇博客日记数据,如下:
document.Variables.SetValue("blogarchive", this.GetBlogArchive());
注:对于GetBlogArchive()方法,则只是一个获取数据实体的函数,比如从数据库获取的数据实体。
经过这简单的两步操作,我们就已完成了对VT模板的操作,剩下就是“告诉”模板引擎将数据呈现出来,我们的博客日记页面就做好了;)是不是很简单?
document.Render(context.Response.Output);
注:本篇的例子代码摘自VTemplate.WebTester项目下的blogarchive.ashx文件
VTemplate项目托管在Google code上。
URL: http://net-vtemplate.googlecode.com/
SVN: http://net-vtemplate.googlecode.com/svn/src/VTemplate.Engine/
更多例子请参考VTemplate.WebTester项目:
http://net-vtemplate.googlecode.com/svn/src/VTemplate.WebTester/
或观看在线演示例子:(感谢网友“DOLT”、“疯子” 提供)
http://61.155.39.222:8888/index.ashx
注:已建立VTemplate模板引擎技术交流QQ群,欢迎各位加入参与项目开发或技术探讨。QQ群:884468
VTemplate模板引擎的使用--入门篇的更多相关文章
- VTemplate模板引擎的使用--高级篇
VTemplate模板引擎的使用--高级篇 在网站中,经常会有某个栏目的数据在多个页面同时使用到.比如新闻网站或电子商务网站的栏目列表,几乎在很多页面都会显示栏目导航.对于这种多个页面同时使用到的“数 ...
- VTemplate模板引擎的使用--进阶篇
1.<vt:template>与<vt:include>标签的不同 <vt:template>和<vt:include> 标签都包含file属性,如果这 ...
- 使用VTemplate模板引擎动态生成订单流程图
1.VTemplate模板引擎的简介 VTemplate模板引擎也简称为VT,是基于.NET的模板引擎,它允许任何人使用简单的类似HTML语法的模板语言来引用.NET里定义的对象.当VTemplate ...
- 模板引擎:ArtTemplate 使用入门和简单的使用
下载地址:https://github.com/aui/artTemplate 快速上手请参考:https://github.com/aui/artTemplate 通过阅读artTemplate原文 ...
- Beetl学习总结(1)——新一代java模板引擎典范 Beetl入门
1. 什么是Beetl Beetl目前版本是2.7.0,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点.使得开发和维护模板有很好的体验.是新一代的模板引擎. ...
- 基于.NET的免费开源的模板引擎---VTemplate(转)
1.VTemplate模板引擎的简介 VTemplate模板引擎也简称为VT,是基于.NET的模板引擎,它允许任何人使用简单的类似HTML语法的模板语言来引用.NET里定义的对象.当VTemplate ...
- JS模板引擎 :ArtTemplate (2)
上一篇初略的介绍了一下javascript中的模板引擎,有兴趣的可以戳 这里 . 这一篇将带着大家一起做一个简易的模板引擎, 上一篇介绍到:模板引擎其实做的就是两件事. 根据一定的规则,解析我们所定义 ...
- JavaEE开发之SpringBoot整合MyBatis以及Thymeleaf模板引擎
上篇博客我们聊了<JavaEE开发之SpringBoot工程的创建.运行与配置>,从上篇博客的内容我们不难看出SpringBoot的便捷.本篇博客我们继续在上篇博客的基础上来看一下Spri ...
- .NET Core/.NET5/.NET6 开源项目汇总13:模板引擎
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
随机推荐
- Python 进阶_OOP 面向对象编程_self 的实例绑定
目录 目录 self 和绑定 调用非绑定的方法 self 和绑定 在 Python 中 self 变量是特殊的, 其用于在实例方法中引用该方法所绑定的实例, 换句话说就是 Python 在实例化对象时 ...
- Nginx负载均衡之TCP/UDP流
负载均衡是指在多个后端服务器之间有效地分配网络流量. 从NGINX Plus R5[1] 版本开始可以代理和负载均衡传输控制协议(Transmission Control Protocol,TCP)通 ...
- java中四种访问修饰符区别及详解全过程
客户端程序员:即在其应用中使用数据类型的类消费者,他的目标是收集各种用来实现快速应用开发的类. 类创建者:即创建新数据类型的程序员,目标是构建类. 访问控制存在的原因:a.让客户端程序员无法触及他们不 ...
- python 波波版压缩软件
#压缩软件 import os import zipfile import tkinter import tkinter.filedialog import tkinter.messagebox '' ...
- java多线程学习笔记(六)
本节开始synchronized关键字的最后一部分内容: 静态同步方法synchronized方法与synchronized(class)代码块 关键字synchronized还可以用在static静 ...
- Spring学习笔记(12)——aop
先了解AOP的相关术语:1.通知(Advice):通知定义了切面是什么以及何时使用.描述了切面要完成的工作和何时需要执行这个工作.2.连接点(Joinpoint):程序能够应用通知的一个"时 ...
- vue 实现active点击图片切换
循环条件下: 1.点击函数@click="active(index)" 获取点击的位置 2.讲索引值传给class,点击哪一个则显示哪一个的样式 3.在data添加ins的初始值 ...
- JS面向对象——组合使用构造函数模型与原型模型中的隐患
组合使用构造函数模型和原型模型中的问题,使用对象字面量重写原型模型会有隐患(涉及到原型的动态性),如下例: <!DOCTYPE html> <html> <head> ...
- LeetCode Array Easy 283. Move Zeroes
Description Given an array nums, write a function to move all 0's to the end of it while maintaining ...
- Python之 set的特点
set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快. set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的. ...