asp模板引擎终结者(WEB开发之ASP模式)
admin
2023-07-30 20:17:48
0

阐述一种全新的ASP模板引擎,实现代码(逻辑)层与HTML(表现)层的分离.这种模板实现方法避免了一 般ASP模板加载模板文件(加载组件)和替换所浪费的资源,实现编译型的模板引擎,提高程序的执行速度和稳定性。

内容:
        当前,WEB开发已经变得非常火爆,因为各种应用,已经约来越要求表现层和逻辑层的分离.ASP和HTML夹在一起程序将变得难于维护,可读性也差。在PHP领域,模板引擎已经非常普遍,如phplib,SMARTY,等等.有使用替换方式的,也有编译方式的(SMARTY),它们都较好的实现了逻辑层和表现层的分离.由于PHP的影响,在ASP界有人借鉴phplib等使用替换的方法开发出asp的模板类,由于ASP在字符处理上性能并不是很强大,所以在速度上受到影响,这样的模板在目前的应用也不是很广泛。如:
1template.html–>
2<html>
3<head>
4<title>{$title}title>
5head>
6<body>
7{$body}
8body>
9html>

1<!Template.asp–>
2<%
3TemplateCode=Load(\”template.html\”)\’自定义函数,装载模板文件到TemplateCode
4TemplateCode=Replace(TemplateCode,\”{$title}\”,\”asp模板引擎终结者\”)\’替换模板
5TemplateCode=Replace(TemplateCode,\”{$body}\”,\”asp模板引擎终结者内容\”)\’替换模板
6Response.Write TemplateCode
7%>       上面的例子只是初步展示了当前ASP模板的思想,有ASP版的CMS系统已经嵌入了对模板的逻辑控制,虽然能够实现逻辑和界面的分离,但是这种模板存在的问题就是模板需要每次都用ASP解析一次,程序相当于解析两次,而且当要替换的内容很多的时候,将会降低性能.而且装载模板需要服务器支持一种组件(FSO,ADODB,XMLHTTP均可实现).
  借鉴于编译型的模板,我在ASP中引进这种思路.提出一种应用在ASP中的功能和性能都很优良的模板体系.下面用代码表示:

 1 template.html–>
 2 <html>
 3 <head>
 4 <title><%=title%>title>
 5 head>
 6 <body>
 7 <%
 8 \’If逻辑控制,当然这里对于FOR,While 循环也一样处理,是不是觉得很简单呢,
 9 \’对逻辑进行html注释,在DW(Dreamweaver)下就不会应为逻辑控制的asp占位符产生变形,对于其他的变量将显示一个asp标记,便于修改
10 IF Catalog=\”music\” Then
11 %>–>
12 <%=music%>
13 <%Else%>–>
14 <%=book%>
15 <%End If%>–>
16 body>
17 html>

1 <!Template.asp–>
2 <%
3 title=\”asp模板引擎终结者\”
4 Catalog=\”music\”
5 music=\”音乐\”
6 book=\”\”
7 %>
8 <!#include file=\”template.html\”–>思路:asp文件进行常规的逻辑处理,运算,不用管显示层,当然需要显示的变量需要和显示层结合(PHP也一样),在模板文件中用<%%>直接控制变量的显示和逻辑的控制,不显示的逻辑控制符用html注释符注释掉,当然,不注释也是可以的.这样在ASP文件的最后\”\”就实现了模板和ASP文件的结合,实现了代码和表现层的分离,这里并没有用ASP去Load模板,然后替换,浪费不必要ASP资源.这些处理全部都省去了。你会发现写ASP文件变得更加方便,因为你再也不需要在其中控制替换,逻辑显示的行为。在ASP中直接执行肯定比替换要来得迅速和稳定.况且,加载模板的时候你必须还要加载一个组件.
         写到这里,你也许明白了这种模板的精髓了,它只是一种设计模式,不是一个用模板类来处理的模板引擎。

相关内容

AdaptAsp.netJ...
将 Asp.net 中使用的 jsgantt-improved G...
2024-05-24 00:42:04
Adafruit 16x2...
要解决Adafruit 16x2显示屏带按键在Raspberry ...
2024-05-24 00:15:53
ActiveReports...
问题的根本在于HashLocationStrategy的路由模式不...
2024-05-22 01:00:16
AcquireTokenA...
在ASP.NET中,如果AcquireTokenAsync方法失败...
2024-05-19 01:13:52
ABPASP.NET:如何...
首先,需要在ABP应用程序的模块中配置JwtBearer身份验证。...
2024-05-15 01:21:45
ABP vs Asp.ne...
ABP (ASP.NET Boilerplate) 和 Asp.n...
2024-05-15 01:15:44

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 常见... 什么是 Apache Doris Apache Doris 是一款 MPP 架构的 OLAP 列式存...
Vmware简易安装ubunt... 大晚上的折腾死我了VMware安装ubuntu,用简易安装结果设置的用户名密码死活进不去再重装一次,...
‘WebDriver‘ obj... selenium库报错"‘WebDriver’ object has no attribute ‘f...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
WiFi中继器和WiFi扩展器... WiFi中继器以无线方式连接到 WiFi 网络并重新广播信号。它就像一个中继系统,连接到我们的 Wi...