Asp模板制作方法详解
作者:孙立 来源:cnblogs.com 发布时间:2007-10-11 19:05:00
摘要: 阐述一种全新的ASP模板引擎,实现代码(逻辑)层与HTML(表现)层的分离.这种模板实现方法避免了一般ASP模板加载模板文件(加载组件)和替换所浪费的资源,实现编译型的模板引擎,提高程序的执行速度和稳定性。
内容: 当前,WEB开发已经变得非常火爆,因为各种应用,已经约来越要求表现层和逻辑层的分离.ASP和HTML夹在一起程序将变得难于维护,可读性也差。在PHP领域,模板引擎已经非常普遍,如phplib,SMARTY,等等.有使用替换方式的,也有编译方式的(SMARTY),它们都较好的实现了逻辑层和表现层的分离.由于PHP的影响,在ASP界有人借鉴phplib等使用替换的方法开发出asp的模板类,由于ASP在字符处理上性能并不是很强大,所以在速度上受到影响,这样的模板在目前的应用也不是很广泛。如:
<!--template.html-->
<html>
<head>
<title>{$title}</title>
</head>
<body>
{$body}
</body>
</html>
<!--Template.asp-->
<%
templateCode=Load("template.html")’自定义函数,装载模板文件到TemplateCode
TemplateCode=Replace(TemplateCode,"{$title}","asp模板引擎终结者")’替换模板
TemplateCode=Replace(TemplateCode,"{$body}","asp模板引擎终结者内容")’替换模板
Response.Write TemplateCode
%>
上面的例子只是初步展示了当前ASP模板的思想,有ASP版的CMS系统已经嵌入了对模板的逻辑控制,虽然能够实现逻辑和界面的分离,但是这种模板存在的问题就是模板需要每次都用ASP解析一次,程序相当于解析两次,而且当要替换的内容很多的时候,将会降低性能.而且装载模板需要服务器支持一种组件(FSO,ADODB,XMLHTTP均可实现).
借鉴于编译型的模板,我在ASP中引进这种思路.提出一种应用在ASP中的功能和性能都很优良的模板体系.下面用代码表示:
<!--template.html-->
<html>
<head>
<title><%=title%></title>
</head>
<body>
<!--<%
'If逻辑控制,当然这里对于FOR,While 循环也一样处理,是不是觉得很简单呢,
'对逻辑进行html注释,在DW(Dreamweaver)下就不会应为逻辑控制的asp占位符产生变形,对于其他的变量将显示一个asp标记,便于修改
IF Catalog="music" Then
%>-->
<%=music%>
<!--<%Else%>-->
<%=book%>
<!--<%End If%>-->
</body>
</html>
<!--Template.asp-->
<%
title="asp模板引擎终结者"
Catalog="music"
music="音乐"
book="书"
%>
<!--#include file="template.html"-->
思路:asp文件进行常规的逻辑处理,运算,不用管显示层,当然需要显示的变量需要和显示层结合(PHP也一样),在模板文件中用<%%>直接控制变量的显示和逻辑的控制,不显示的逻辑控制符用html注释符<!---->注释掉,当然,不注释也是可以的.这样在ASP文件的最后"<!--#include file="template.html"-->"就实现了模板和ASP文件的结合,实现了代码和表现层的分离,这里并没有用ASP去Load模板,然后替换,浪费不必要ASP资源.这些处理全部都省去了。你会发现写ASP文件变得更加方便,因为你再也不需要在其中控制替换,逻辑显示的行为。在ASP中直接执行肯定比替换要来得迅速和稳定.况且,加载模板的时候你必须还要加载一个组件.
写到这里,你也许明白了这种模板的精髓了,它只是一种设计模式,不是一个用模板类来处理的模板引擎。
作者: 孙立 Email: 17bizAT126.com
写于:2006/3/5
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://sunli.cnblogs.com/archive/2006/03/05/343095.html
猜你喜欢
- JavaScript onkeypress 事件用户按下或按住一个键盘按键时会触发 onkeypress 事件。注意:onkeypress
- 前段时间冷空气突袭的时候,据说郊区密云的雪积得挺厚,但北京城内除了飘了一点小雪粒,毫无动静。应该是气温过高所致,我在慈云寺桥附近拍下的照片可
- SQL Server执行动态SQL的话,应该如何实现呢?下面就为您介绍SQL Server执行动态SQL两种正确方式,希望可以让您对SQL
- 支持lrc歌词,IE only 代码未加密且有详细注释,希望对做音乐页面的朋友有帮助。 如果大家还有什么好多播放器,告诉我,我好参
- 1.from_unixtime的语法及用法(1)语法:from_unixtime(timestamp ,date_format)即from_
- 大家好,我是小五前一阵给大家分享了,Python如何给图片加水印。评论区就有小伙伴问,可不可使用Python去除图片水印的方法呢?这个肯定有
- 有两种类型的回调函数:blocking callbacks (also known as synchronous callbacks or
- Python 包含6种数据类型,其中Number(数字)、String(字符串)、Tuple(元组)、List(列表)、Dictionary
- JDBC数据库连接MySQL中建表在终端使用命令mysql -u root -p打开数据库,在数据库操作环境下进行创建数据库,建表等等操作建
- 我认为多选列表具有完美的功能——只需按下Ctrl键,同时点击鼠标从列表中选择多个项目。以下是一个典型的多选列表框:选出你最喜爱的快餐:&nb
- 引言您可以使用df.loc()函数在Pandas DataFrame的末尾添加一行:#add row to end of DataFrame
- mysql中文排序方法1 mysql在查询字符串时是大小写不敏感的,在编绎mysql时一般以ISO-8859字符集作为默认的字符集,因此在比
- 相信学Python的小伙伴肯定有这样的尴尬局面,给一个函数不会用,原因是:不知道参数列表中的类型是什么意思,比如初学者都会疑问的:*args
- vant文档:Vant 2 - Mobile UI Components built on Vue实现效果: 代码实现:1.nav
- 本文实例讲述了golang实现的文件上传与文件下载功能。分享给大家供大家参考,具体如下:upload.gopackage commonimp
- Python运算符重载 Python语言提供了运算符重载功能,增强了语言的灵活性
- 首先说明,伪造访问来路不是什么光明正大的事情,目的就是为了欺骗服务器。原本以为给 XMLHTTP 对象增加一个 Referer 的heade
- 一、文件操作pandas内置了10多种数据源读取函数,常见的就是CSV和EXCEL使用read_csv方法读取,结果为dataframe格式
- 本文实例讲述了Node.js文本提交与显示方法。分享给大家供大家参考,具体如下:index.jsvar server = require(&
- 如下所示:pd.to_datetime(data[data['last_O_XLMC']==data['O_XLMC