zoukankan      html  css  js  c++  java
  • 对模板引擎的思考

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

    //如果要轉載本文請注明出處,免的出現版權紛爭,我不喜歡看到那種轉載了我的作品卻不注明出處的人 Seven{See7di#Gmail.com}

    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中直接执行肯定比替换要来得迅速和稳定.况且,加载模板的时候你必须还要加载一个组件.
    写到这里,你也许明白了这种模板的精髓了,它只是一种设计模式,不是一个用模板类来处理的模板引擎。
  • 相关阅读:
    宿主机无法访问CentOS7上Jenkins服务的解决办法
    415. Add Strings
    367. Valid Perfect Square
    326. Power of Three
    258. Add Digits
    231. Power of Two
    204. Count Primes
    202. Happy Number
    172. Factorial Trailing Zeroes
    171. Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/see7di/p/2239927.html
Copyright © 2011-2022 走看看