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

标签:ASP,模板
0
投稿

猜你喜欢

  • 使用python解析json字段的3种方式实例

    2021-12-24 04:16:27
  • 浅谈MySQL中的自增主键用完了怎么办

    2024-01-24 07:51:50
  • 关于数据库中保留小数位的问题

    2024-01-13 13:34:45
  • mysql时间戳转成常用可读时间格式的两种方法

    2024-01-18 09:38:24
  • Python数据可视化之简单折线图的绘制

    2021-05-25 11:59:30
  • JS+ASP实现无刷新新闻列表之分页

    2007-08-22 12:57:00
  • php统计数组不同元素的个数的实例方法

    2023-06-11 23:04:59
  • Alfred + Gitee搭建免费图床的使用实例详解

    2023-10-04 08:24:30
  • python高并发异步服务器核心库forkcore使用方法

    2021-12-04 18:38:24
  • SqlServer 2005 T-SQL Query 学习笔记(4)

    2024-01-26 07:44:06
  • pytorch常用函数定义及resnet模型修改实例

    2022-09-18 08:19:19
  • 让SQL Server数据库自动执行管理任务(一)

    2009-03-20 10:35:00
  • python写入xml文件的方法

    2023-01-01 15:08:54
  • Python详细讲解浅拷贝与深拷贝的使用

    2023-01-01 03:00:10
  • 在python的WEB框架Flask中使用多个配置文件的解决方法

    2023-09-05 03:56:54
  • JS性能优化笔记搜索整理

    2024-04-17 09:54:55
  • Web 设计:实现干净代码的12条定律

    2008-12-04 13:27:00
  • 10分钟快速上手VueRouter4.x教程

    2024-05-02 17:10:38
  • Python GUI布局工具Tkinter入门之旅

    2021-11-08 14:38:23
  • Windows下MySQL8.0.11社区绿色版安装步骤图解

    2024-01-14 23:02:34
  • asp之家 网络编程 m.aspxhome.com