1.模板类的设计 实现代码封装成为模板类,即是为了与phplib兼容,也使得代码方便管理与扩展. 模板类要实现的目标为:从模板文件中读入显示的html代码,将这些显示代码中需要动态数据的地方替换为asp程序运算所得出的数据,然后按照一定的顺序输出.其中,替换的部分可以自由的设定.因此它必须完成如下任务: ·从模板文件中读取显示用的html代码. ·将模板文件与实际生成的数据结合,生成输出的结果. ·允许同时处理多个模板. ·允许模板的嵌套. ·允许对模板中的某个单独的部分进行处理. 【程序编程相关:面向缓存的站点规划1--mod_prox】
每个进行过较大型的asp-web应用程序设计的开发人员大概都有如下的经历:asp代码与页面html混淆难分,业务逻辑与显示方式绞合,使得代码难以理解.难以修改;程序编写必须在美工之后,成为项目瓶颈;整合的程序代码与html静态页面时,花费大量的时间才能得到理想的效果,兼作了美工.的确,用脚本语言开发web应用不容易将数据的处理与数据的显示分开,但在多人合作的情况下,如果无法将数据与显示分开,将大大影响开发的效率,专业分工的发挥. 其它的脚本语言,如jsp.php都有自己的解决方案,asp的后一代产品asp.net也实现了代码与页面,似乎直接过渡到asp是不错的选择.但是总有这样或那样的原因让我们不能或暂时不能放弃asp直奔.net大营.从公司角度来看,转换语言是一笔不少的投资,包括雇佣熟手.net程序员.培训原有程序员.开发工具的转型.开发风格的转型.界面风格转变.接口风格.软件架构.文档.开发流程等等;这还意味着原有的代码必须在新语言环境里重写以实现最佳的效果与稳定性;同时将直接影响这段时间内项目的进度,更有可能导致个别程序员出走.由此看来在您决定转换语言之前,在原基础上寻求一种解决方案,才是最好的选择. php通过模板实现代码与页面,可供选择的有fasttemplate.phplib.smarty等多种,其中phplib的影响最大.使用最多.既然如此,我们直接把它搬到asp来,对于同时使用php与asp的公司还有很有好处:一.美工处理页面时,不管将要套用php还是asp,处理方式是一样,无须经过培训;二.程序员编写代码时,两种语言间的思路接近或一致,相同功能在两种语言实现时,只需拷贝过来略作修改即可,保证了工作效率与项目进度. 【推荐阅读:使用VC++开发PHP扩展注意事项】
2.模板类的实现 给出具体代码之前,先把主要函数列出,用过phplib的朋友应该对此很熟悉了: 1)public sub set_root(byval value) 设定模板默认目录 2)public sub set_file(byval handle,byval filename) 读取文件 3)public sub set_var(byval name, byval value, byval append) 设置映射数据-替换变量 4)public sub unset_var(byval name) 取消数据映射 5)public sub set_block(byval parent, byval blocktag, byval name) 设置数据块 6)public sub set_unknowns(byval unknowns) 设定未指定映射的标记处理方式 7)public sub parse(byval name, byval blocktag, byval append) 执行模板文件与数据的结合 8)public sub p(byval name) 输出处理结果 【扩展信息:限制输入次数的系统登陆的实现】
实现方法: 采用fso读取模板文件 采用正则替换实现模板文件与数据的结合 处理多个模板用数组存储来实现. 模板的嵌套的实现主要的想法是:将模板与输出(任何中间的分析结果)一视同仁,都可拿来做替换,即可实现. 单独部分的处理的通过在模板文件中设定标注,然后在正则替换中结合标注来控制,实现部分替换.
实现代码:<%´=======================================================================´ class name: kkttemplate asp页面模板对象´ design by : 彭国辉´ date: 2004-07-05´ website: http://kacarton.yeah.net/´ email: kacarton@sohu.com´´ 本对象中使用了set_var.set_block等命名方法是为了兼容phplib´=======================================================================
... 下一页