ASP 模板引擎

如想获取最新的这个类,可以写邮件给我

'//ASP 模板引擎 (Taihom.Template.class v2.0)

'//Code By Taihom
'//Taihom 原创
'//版权说明
'//本类允许转载、复制和修改,但转载、复制和修改的同时请保留原始的出处和作者声明,这也是对作者Taihom劳动成果的一种尊重!
'//如果您对本类进行修改,希望您也可以给我发一份您修改过后的类(taihom[@]163.com) 如想获取最新的这个类,可以写邮件给我

本类支持单标签,支持简单的逻辑,支持嵌套模板,支持循环列表,支持循环列表的逻辑,支持自定义标签,支持自定义标签属性和自由获取标签……

先看看说明!

  模板类的标签规则 说明
标签边界: {}、() {@}是单标签
{}是类标签,主要是应用在{include("...")}和{if ...}...{else}...{/if}
<loop ...><.../loop>循环标签
包含文件: {include("文件路径")} 该模板类支持包含同模板目录下的文件,例如 {include("head.html")}
单标签: {@标签名}
{@标签名 属性="值"}
(@字段名)、(@字段下标)
(@...)单标签只能应用在loop块
逻辑标签: {if @标签变量=="值"} 代码块 {else} 代码块 {/if}
{if @标签变量=="值"}
代码块 {/if}

可以处理一些简单的逻辑关系 ,
目前支持的运算符有==<=>=><!=<>
例如:{if @islogin=="1"} 您已经登录 {else} 您没有登录! {/if}
逻辑标签可以应用到循环块中,但是逻辑标签不能跟自己嵌套

v2.0开始支持逻辑标签的条件支持,运算符号前后均可支持标签和带属性的标签,
这样使得{if @var1==@var2} 或者 {if @var xx='??' == @var1 yy='??'}
得到了充分的支持

循环标签: <loop 属性1="值1" 属性2="值2" ... >
代码块 (@数字)
(@字段名 属性="")
</loop>

这里要注意的是 <loop> 标签部分一定要换行之后再写代码块,
这里主要设置一个断点,以便模板可以解析到<loop>的参数。
被循环块包含着的,我称之为循环体,也就是需要循环输出的部分,
一般来说,循环体是用来显示数据用的,这些数据往往都是从数据库直接筛选的结果。
所以,循环体也支持单标签,只不过循环体的单标签部分的边界符号是()
单标签的输出方式有两种,一种是"@字段下标,一种是"@字段名",具体怎么样用,等下例子中会有说明
循环部分也支持逻辑:用法跟上面的逻辑支持也是一样的。循环部分的逻辑支持获取外部单标签的方法是 @变量 不用()边界符号 例如{if (@fieldname)>@var1}

循环块有一个保留属性 name="块名字" 除了这个,想定义什么自定义属性都可以
这个值缺省也是可以的,模板类会自动分配一个name给到<loop>
主要是给<loop>一个唯一的命名,在程序中就可以传递数据给这个<loop>

如果输出的结果为空,那么如何自定义自己的输出结果呢?很简单,只要在loop标签里面加一个empty标签:例如:

<loop name="loop3" sql="select * from [table] where 1=2">
<empty>
<li>很抱歉,没有您要查找的数据!</li>
</empty>
<li>显示你的数据 (@1) (@2) (@3)</li>
</loop>

模板引擎的默认属性支持,你也可以修改程序加上自己定义的属性
这些属性可以应用在单标签上
截取字符 len="数字" 例如:{@title len="5"} 这样将会截取@title前面5个字符作为输出
返回字符串长度 return="len" 例如:{@content return="len"} 将返回这个变量的字符串长度
清除HTML格式 return="clearhtml" 例如:{@content return="clearhtml"} 这样将会清除@content输出的HTML格式
清除所有空格换行 return="clearspace"

例如:{@content return="clearspace"} 这样将会清除@content输出的所有的空格和换行

多个return的时候可以用逗号分隔

例如:return="clearhtml,clearspace"

清除所有的格式 return="clearformat" 这样只会保留文字,连HTML格式,换行什么都没有了
返回字符串的server.urlencode return="urlencode" {@content return="urlencode"} 将返回与ASP中server.urlencode("字符串")一致的结果
日期显示方式转换 dateformat="日期显示方式"

年(yyyy|yy)月(mm|m)日(dd|d) 时(HH|H)分(MM|M)秒(SS|S)星期(w|W)

默认支持的方式有
dateformat="0" 显示日期和/或时间。如果有日期部分,则将该部分显示为短日期格式。如果有时间部分,则将该部分显示为长时间格式。如果都存在,则显示所有部分
dateformat="1" 使用计算机区域设置中指定的长日期格式显示日期
dateformat="2" 使用计算机区域设置中指定的短日期格式显示日期
dateformat="3" 使用计算机区域设置中指定的时间格式显示时间
dateformat="4" 使用 24 小时格式 (hh:mm) 显示时间

其他的日期格式化方式,可以参照下面的例子:
例如:{@datetime dateformat="yyyy-mm-dd"} 将会输出类似 2009-03-01这样的时间格式
例如:{@datetime dateformat="yy年mm月dd日- 星期w"} 将会输出类似 09年03月01日 - 星期? 这样的时间格式

模板类的使用例子,假设已经实例化到tpl
类的功能 方法 说明
设置   '配置信息
'tpl.setCharset = "utf-8" '可选设置,默认是utf-8
'tpl.setCache = 1 '可选设置,缓存开关,默认是关的
tpl.SITE_ROOT = cStr(Server.MapPath("./"))'必选设置,后面不带斜杠
'tpl.setTemplatedir = "/templates/"'可选设置,设置模板目录
'tpl.setCachedir = "/cache/templates/"'可选设置,设置缓存目录
'tpl.setAbsPath = 1 '可选设置,模板绝对路径,默认是开的,作用是输出的时候将模板相对路径替换成绝对路径,已经是绝对路径或者描点等不受影响,此开关只是转换那些不是绝对路径的
'tpl.CachePageTimeout=0'(v2.0新特性)可选设置,0=不生产前台页面缓存,>0表示缓存的时间,单位是分钟 ,这个设置需要在页面开头,也就是在赋值之前设置,如果不设置,默认不缓存,建议数据有实时更新的不进行设置
tpl.path = "index.html"'必选,模板文件路径相对于模板目录
加载并解析模板 tpl.load() '加载模板,这个方法负责读取并且解析模板,
当然,如果你不需要提取模板的参数,你可以放到.display()之前
例如:
tpl.load()
tpl.display()
提取所有块标签 Set getblock = tpl.getblock

'获得块列表,返回dic对象,key = 循环块名称,items = 块的属性(数组,0=属性名称,1=值)

例子:
Dim blockname,block
Set block = tpl.getblock
For blockname in block
Response.Write(blockname)'//这样 就可以输出所有块的名称了
Next

指定块标签的属性 Set getattr = tpl.getattr

如果你想提取块名字是loop1的sql的内容 那么只要 getattr("loop1.sql")
如果没有,将返回empty值,也就是空值

标签赋值 tpl.add("@标签")="值" 设置标签的值,也就是用这个值来替换掉{@标签}
块标签赋值 tpl.add("块标签")=记录集 设置循环块的值,这里我们只要给一个记录集,其他的输出,由模板去执行,也不用判断记录集是否为空。
显示输出 tpl.display() '显示模板,将结果输出
清除缓存 tpl.ClearCache 如果设置了模板缓存,用这个将可以清除所有的模板缓存,对于不常修改的模板,我建议开启缓存。当然如果模板有改动,必须要清空了缓存,缓存才会重建
程序中获取输出结果 html = tpl.gethtml 将输出的结果赋值给html变量,这里的结果是已经是最后的输出结果
生成静态页面 tpl.OutPutPage(cStr(Server.MapPath("./"))) = "asdf.html" 如果需要生成静态页面,使用 .OutPutPage("路径")=文件名
完整的类使用方法(来自demo.asp)

<script language="vbscript" runat="server">
Response.Buffer = true
Response.Expires = 0
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "No-Cache"
Response.CodePage="65001"
Response.Charset="utf-8"
</script>
<!--#include file="class/Template.class.vbs.asp" -->
<!--#include file="class/DBOperate.class.vbs.asp" -->
<%
'****************ACCESS数据库******************

Dim dbo
Set dbo = New DBOperateClass
dbo.setConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mapPath("./test.mdb")

'//-------这里是使用该类的例子
Dim tpl
Set tpl = New TemplateManageClass
'配置信息
'tpl.setCharset = "utf-8" '可选设置,默认是utf-8
'tpl.setCache = 1 '可选设置,缓存开关,默认是关的
tpl.SITE_ROOT = cStr(Server.MapPath("./"))'必选设置,后面不带斜杠
'tpl.setTemplatedir = "/templates/"'可选设置,设置模板目录
'tpl.setCachedir = "/cache/templates/"'可选设置,设置缓存目录

tpl.path = "index.html"'必选,模板文件路径相对于模板目录
tpl.load() '加载模板

'输出的数据变量
tpl.add("@title")="标题在这里"
tpl.add("@username")="taihom"
tpl.add("@name")="梅川内酷"
tpl.add("@password")="密码"
tpl.add("@runtime")=tpl.RunTimer
tpl.add("@author")=tpl.Author

'获得循环块的参数
Dim block,getattr
Set block = tpl.getblock'获得块列表,返回dic对象,key = 循环块,items = 块的属性(数组,0=属性名称,1=值)
Set getattr = tpl.getattr'获得属性列表,返回dic对象

Dim sql1 : sql1 = getattr("loop1.sql")'获取loop1块的sql属性
Dim sql2 : sql2 = getattr("loop2.sql")'获取loop2块的sql属性
Dim sql3 : sql3 = getattr("loop3.sql")'获取loop3块的sql属性

'循环块内容输出
tpl.add("loop1") = dbo.execute(sql1)'直接给loop1块数据
tpl.add("loop2") = dbo.execute(sql2)'直接给loop2块数据
tpl.add("loop3") = dbo.execute(sql3)'直接给loop3块数据

tpl.display()'显示模板

'--------------清楚所有模板缓存
'tpl.ClearCache

'--------------获取输出的代码
'html = tpl.gethtml

'--------------将结果生成静态页面
'如果需要生成静态页面,使用 .OutPutPage("路径")=文件名
'tpl.OutPutPage(cStr(Server.MapPath("./"))) = "asdf.html"

dbo.close
Set tpl = Nothing
Set dbo = Nothing
%>

 

代码在这里下载:如想获取最新的这个类,可以写邮件给我
演示地址:http://www.taihom.com/templateclass/demo.asp
模板地址:http://www.taihom.com/templateclass/templates
代码下载:http://www.taihom.com/templateclass/taihom.template.class.rar
最新的下载: http://download.csdn.net/source/1330402

转载于:https://www.cnblogs.com/taihom/archive/2009/05/20/1467781.html

ASP 模板引擎,ASP 模板类 (Taihom.Template.class)相关推荐

  1. Django 模板引擎以及模板

    2019独角兽企业重金招聘Python工程师标准>>> 在Django框架中,可以使用两种模板引擎,一种是默认的Django模板引擎,还有一种是Jinja2模板引擎: 1.模版引擎的 ...

  2. Flask 框架下 Jinja2 模板引擎高层 API 类——Environment

    Environment 类版本: 本文所描述的 Environment 类对应于 Jinja2-2.7 版本. Environment 类功能: Environment 是 Jinja2 中的一个核心 ...

  3. html模板引擎 字符串长度,Web前端模板引擎の字符串模板

    这是一个系列文章,将会介绍目前Web前端领域里用到的三种模板引擎技术,它们分别是: 基于字符串的模板 基于Dom操作的模板 基于虚拟Dom的模板 本文是这个系列的第一篇,着重介绍基于字符串的模板引擎的 ...

  4. php smarty 原理,php模板原理PHP模板引擎smarty模板原理浅谈

    mvc是开发中的一个伟大的思想,使得开发代码有了更加清晰的层次,让代码分为了三层各施其职.无论是对代码的编写以及后期的阅读和维护,都提供了很大的便利. 我们在php开发中,视图层view是不允许有ph ...

  5. 工具集核心教程 | 第五篇: 利用Velocity模板引擎生成模板代码

    前言 不知道大家有没有这样的感觉,在平时开发中,经常有很多dao.service类中存着很多重复的代码,Velocity提供了模板生成工具,今天我教大家怎么和这些大量的重复代码说再见. 参考项目:ht ...

  6. php开发自己的模板引擎,如何用PHP来编写自己的模板引擎 - PHP|模板引擎 - 软件工程|架构设计|网站设计|艺术营销 - 河洛炎黄 - 魏文侯...

    本文的目的不是为了让大家学会如何编写一个完善的模板引擎,只是为了给PHP初学入门者解释模板引擎的原理和作用. PHP模板引擎的作用是为了让表现层逻辑和页面本身分开,让程序员和美工的工作可以相对独立,并 ...

  7. 前端模板引擎(jQuery模板)jsrender的基本教程

    转载:原文链接:https://www.jianshu.com/p/3151d2256410 jsrender官网号称简单直观.强大轻快可扩展.压缩体积也只有8.9kb,可以单独在浏览器或node中使 ...

  8. java调用js模板引擎_JavaScript模板引擎应用场景及实现原理详解

    本文实例讲述了JavaScript模板引擎应用场景及实现原理.分享给大家供大家参考,具体如下: 一.应用场景 以下应用场景可以使用模板引擎: 1.如果你有动态ajax请求数据并需要封装成视图展现给用户 ...

  9. java模板引擎 jade_Jade 模板引擎使用

    在 Express 中调用 jade 模板引擎 jade 变量调用 if 判断 循环 Case 选择 在模板中调用其他语言 可重用的 jade 块 (Mixins) 模板包含 (Includes) 模 ...

最新文章

  1. 激光雷达Lidar与毫米波雷达Radar:自动驾驶的利弊
  2. hybird 跨平台移动app开发
  3. 轻触开源(一)-Java泛型Type类型的应用和实践
  4. php多条件检索怎么写,sql查询同时满足三个条件 php查询数据库,同时满足三个条件的sql怎么写?...
  5. Servlet期末复习二
  6. 天勤计算机考研高分笔记(一)绪论1数据结构
  7. ereg/eregi报错处理办法
  8. 程序员如何写好设计方案
  9. Python库详解。python有那些库你都知道了嘛?
  10. Arcgis实例操作9--空间分布趋势图、分割多部分要素、导出矢量数据的文本文件
  11. esp32-Arduino开发学习
  12. win7原版iso_【JUJUMAO_MSDN系统】Windows 10 1903 64位 五版合一 原版ISO镜像
  13. pdf.js 修改预览页面title
  14. grunt从入门到自定义项目模板
  15. AI优秀开源项目总结
  16. Spring笔记(4):响应式编程、Reactor、WebFlux、Flow
  17. 上海浦东新区计算机专科学校,上海|专科
  18. 先进工艺22nm FDSOI和FinFET简介
  19. 惠普m1005mfp说明书_惠普HP LASERJET M1005一体机怎么使用?
  20. 易语言开发-托盘图标和菜单的实现

热门文章

  1. 葵花宝典之数据结构1800T--2
  2. 计算机可以进行磁盘管理,磁盘管理里可以看到盘 但是我的电脑里没有
  3. 如何让AI让3000位艺术家画同一张画
  4. 3.正态分布概率模型下的最小错误率贝叶斯决策MATLAB程序代码
  5. 增长黑客,创业公司的用户与收入增长秘籍
  6. 20190422每周精品之认知
  7. Vue开发实例(11)之el-menu实现左侧菜单导航
  8. 小程序战局最新动态!这些你应该知道
  9. 2023 简单响应个人收款二维码源码 美化版
  10. 无人机民航执照、多旋翼、固定翼视距内驾驶员、机长考证试题