CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

asp模板引擎终结者(WEB开发之ASP模式)

楼主cao5(草屋主人)2006-03-05 10:01:34 在 Web 开发 / ASP 提问

asp模板引擎终结者(WEB开发之ASP模式)    
  作者:   孙立   Email:   17bizAT126.com  
  写于:2006/3/5  
  版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明  
  http://sunli.cnblogs.com/archive/2006/03/05/343095.html  
  关键词:ASP   模板  
  摘要:   阐述一种全新的ASP模板引擎,实现代码(逻辑)层与HTML(表现)层的分离.这种模板实现方法避免了一   般ASP模板加载模板文件(加载组件)和替换所浪费的资源,实现编译型的模板引擎,提高程序的执行速度和稳定性。  
  摘要:   阐述一种全新的ASP模板引擎,实现代码(逻辑)层与HTML(表现)层的分离.这种模板实现方法避免了一般ASP模板加载模板文件(加载  
  组件)和替换所浪费的资源,实现编译型的模板引擎,提高程序的执行速度和稳定性。  
  内容:  
                  当前,WEB开发已经变得非常火爆,因为各种应用,已经约来越要求表现层和逻辑层的分离.ASP和HTML夹在一起程序将变得难于维护,可读性也差。在PHP领域,模板引擎已经非常普遍,如phplib,SMARTY,等等.有使用替换方式的,也有编译方式的(SMARTY),它们都较好的实现了逻辑层和表现层的分离.由于PHP的影响,在ASP界有人借鉴phplib等使用替换的方法开发出asp的模板类,由于ASP在字符处理上性能并不是很强大,所以在速度上受到影响,这样的模板在目前的应用也不是很广泛。如:  
   
  1<!--template.html-->  
  2<html>  
  3<head>  
  4<title>{$title}</title>  
  5</head>  
  6<body>  
  7{$body}  
  8</body>  
  9</html>  
  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文件的最后"<!--#include   file="template.html"-->"就实现了模板和ASP文件的结合,实现了代码和表现层的分离,这里并没有用ASP去Load模板,然后替换,浪费不必要ASP资源.这些处理全部都省去了。你会发现写ASP文件变得更加方便,因为你再也不需要在其中控制替换,逻辑显示的行为。在ASP中直接执行肯定比替换要来得迅速和稳定.况且,加载模板的时候你必须还要加载一个组件.  
                    写到这里,你也许明白了这种模板的精髓了,它只是一种设计模式,不是一个用模板类来处理的模板引擎。    
  问题点数:50、回复次数:10Top

1 楼Novolee(人民子弟兵)(http://biglee.cn/?c)回复于 2006-03-05 12:59:13 得分 5

Mark  
  有空再看Top

2 楼mrwang2000(王先生)回复于 2006-03-05 13:07:43 得分 10

写得不错,帮顶。。。  
  Top

3 楼mandolin(Aphelion)回复于 2006-03-05 13:27:58 得分 5

很好Top

4 楼cao5(草屋主人)回复于 2006-03-05 21:15:52 得分 0

自己UP一下Top

5 楼kaijier(<空杯子>)回复于 2006-03-06 22:52:41 得分 10

楼主,我顶你!!  
  想法真的不错,大脑子!  
  支持!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Top

6 楼Technoi()回复于 2006-03-06 22:56:24 得分 5

支持Top

7 楼cao5(草屋主人)回复于 2006-03-07 19:46:00 得分 0

这个可能需要用过模板写过程序的人才能理解,  
  (有人问我为什么要把代码和HTML分开)Top

8 楼cqhunter(跑)回复于 2006-03-07 20:53:55 得分 5

不是很明白大哥的想法,呵呵,不过,还是顶。Top

9 楼hax(海曦)回复于 2006-03-07 21:15:27 得分 5

曲线救国,作为实践来说还算可行,不过太多冗长的符号了,看上去还是不舒服。另外,楼主标题太大了。Top

10 楼babay2008()回复于 2006-03-08 01:29:02 得分 5

markTop

相关问题

  • 想学web开发,学asp好还是php好?
  • 有没有更好的ASP。NET WEB开发工具
  • ASP有没有模板
  • 探讨请教asp模板问题
  • 有没有ASP的模板类介绍?
  • ASP模板生成静态页问题
  • web 开发中 datagrid 里面模板列的 checkbox,autopostback=true 时,触发到函数里面了,怎样知道是在哪一行触发的?
  • 微软专家请进,在exchange上的web开发,使用asp就正常,使用aspx就不行了!!
  • 在.net的移动Web开发里面怎么没有象以前 ASP里面的Session全局变量呢?
  • 我想学web开发,需要学些什么东西?asp到底是种什么东西?开发语言?

关键词

得分解答快速导航

  • 帖主:cao5
  • Novolee
  • mrwang2000
  • mandolin
  • kaijier
  • Technoi
  • cqhunter
  • hax
  • babay2008

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo