ASP支持嵌套模板和循环标签的模板类
明晨网络MingchenNet.com测试过许多ASP的模板类,这次分享一下少云带给我们的支持嵌套模板和循环标签的模板类。原文引用如下:
这个模板类,陆陆续续花了很长的时间,期间遇到不少问题,求助于网络,到今天才算完成。发布一下,
首发地址:http://www.devjs.com/post/asp-template-class.html
ASP Template 类说明
作者:shaoyun Form www.devjs.com
时间:17:05 2008-12-10
本模板类是作者根据实际开发需要开发的,参考了不少网络上的实现,并加以综合,力求简洁、实用。
这里感谢博客园zhongdaiqi对于正则最小匹配的回答,使我由此举一反三,解决了不少正则匹配的问题
同时感谢领星动网的pkmaster解决作者对于ASP默认属性理解的问题
本类允许转载、复制和修改,但转载、复制和修改的同时请保留原始的出处和作者声明,这也是对作者劳动成果的一种尊重!
有什么问题请到作者blog留言,地址 www.devjs.com
++功能简介
--支持单层循环标签,并可在一个页面类多次使用.
--支持引入模板文件,在装载的时候,将进行模板的合并
--可指定模板文件路径,路径为相对路径,默认为当前文件路径
--对于空白行最终输出的时候,进行删除
++标签定义
{$tag$} 普通标签
{$include:filename$} 模板文件标签
<loop name="tagname">...</loop> 循环标签,name属性为标签名称
{$tag/subtag$} 循环标签中的子标签
++标签说明:
采用正则表达式进行标签的匹配和过滤,loop标签中的name属性之前可以有多个空格,之前之后可以存在其他属性,name属性可以带引号也可以不带,识别单引号和双引号,设定只匹配第一个
++函数说明
LoadTPL函数 读取模板文件,读取的时候,检查模板文件里的嵌套模板文件标签,首先替换嵌套的模板文件标签的内容,合并模板文件,存入变量
Assign函数 分析模板标签,对于普通标签将其加入数据对象,如果为循环标签,则存入循环数据对象,如果循环标签对象更换,则将循环累加的数据加入数据对象
Flush函数 模板类很重要的一个函数,用于处理循环标签,对于单次的循环,执行循环块内部替换,对循环数据进行累加保存,每个单次循环完后必须调用
Bulid函数 将没有来的及保存的循环数据加入到数据对象,然后按照模板定义输出数据对象中的所有数据,普通标签的替换在这一步完成
特别说明一下,assign函数有一个便捷的赋值方法,就是调用默认属性来赋值,效果是一致的,例如:
tp.assign("title","新闻")
可以采取这样更简洁的赋值方式
tp("title")="新闻"
tp是实例化的模板对象
代码很长,看起来要细心点,感觉乱的话,先看调用部分,然后再看类的实现部分。
附上源代码,包含测试示例: ASPTemplateClass.rar
2009年3月27日22:11:09 更新
把这个模版类整理的一下,代码小小的变动了一下,调用方式依然不变,这次整理如下:
++ 将创建和释放正则表达式对象的代码放在了类的初始化和类的释放部分,由于类的功能实现基本都是用它,多次创建和释放必然带来更多的开销
++ 将load函数和bulid函数里的部分代码分离了出来,现在可以通过gethtml函数获取当前的替换结果,也方便了测试代码
++ 增加AssignFromTpl(tagname,tplfile)函数,用模版文件的内容来替换标签,这意味着可以用逻辑来控制什么时候用那个文件来替换标签,如此模版可以运用的更灵活
这次的修改整理,代码的效率会更高,也稍微灵活了一点,各位网友的建议我会考虑在新的模版类中加入,目前大部分功能已经完成,逻辑控制还没有加入,毕竟逻辑的加入,需要操作变量,也会给数据绑定部分的功能造成影响。
数据绑定是这个类的重点,也使这个类功能更强大,但逻辑控制也必不可少,它能使类更灵活。而且在这个类中,我会同时提供结合模板类批量生成静态文件的相关细节。
数据绑定、逻辑控制、静态生成三个功能缺一不可!这些一完成,就可以实现通过写模版标记,来读取数据库并格式化显示!
不过具体发布的时机暂时还无法确定,这段时间身边事情比较多,公司的项目不知道要整到什么时候!看情况,尽早喽!
更新类文件下载:ASPTemplate-update090327.rar
文章源自:明晨网络,shaoyun,《ASP支持嵌套模板和循环标签的模板类》,http://www.mingchennet.com/tec/code/asp/4.htm
- 上一篇:没有了
- 下一篇:ASP连接MYSQL数据库