我从2000年开始使用PHP做为Web应用的脚本语言,数年前接触到smarty以及smarttemplate,
在此过程中,两者都用过不少时间.两下比较后,后来就一直使用smarttemplate,而不是广泛流行的smarty.
其原因不仅仅是smarttemplate较之smarty更轻巧也小得多.
更重要的.是我认为模板所在的显示层,不应该承担起太多的逻辑判断与行为处理.(无可避免,但我认为应该最小化减轻在显示层做这些工作.)
使用模板引擎的目的不外乎二:
一者是使代码尽量和显示结构分离,
二者是能让工作尽量分工,程序员专注于数据,前端设计师专注于页面结构.
从前者的角度来说,如果在模板里夹杂太多运算,逻辑,甚至数据处理的程序内容.无疑是在开历史的倒退车.这样做跟直接在HTML里<?php 有什么区别呢?
从后者的角度来说,也许很多公司没有细分职责.大部份是程序员连程序带切页面一起处理完.所以站在这个角度smarty比之smartemplate就具有不少优势.因为可以一边处理页面代码一边"顺便"就用smarty的语法来完成一些逻辑控制之类的东西.殊不知这样看似方便的背后其实在破坏着一个良好的逻辑控制/显示 分离的结构.造成项目的维护性和扩展性降低.
不过smarttemplate也有一些麻烦的地方,一来是自06年开始就未再更新.
二来是无法引用一些全局变量.页面中所有的变量都得先assign注册,这样会造成诸如放在session中的用户昵称,ID等.为了在每个页面上显示.每次都得assign一次.颇不方便.
smarttemplate的控制功能只提供了IF ELSE BEGIN的基本语法.将对显示层的破坏降低到最大层度.但是IF中可供选择的项太少.
只能是 注册变量 比对 一个固定的值.无法用 注册变量比对注册变量.亦无法使用and or等基本语法.使得灵活程度相对降低.
(即使我们应尽量避免在页面中处理逻辑.但有些地方仍无可避免....:-( )
我对这些做了一些修改.在原有代码基础上增加了{SESSION.uid},{GLOBALS.test}之类的全局变量引用方法.
对IF做了些改写,使IF能支持如 <!-- IF {a}>{b} AND {c}<5 -->的写法.
亦对BEGIN做了略为修改.使之实现类似foreach的功用.
如果有想要的.可以邮件/站内短信给我.提供给大家.
分享到:
相关推荐
对smarttemplate1.2.1 中的文件结构和部分程序代码稍做了一下修改,在IIS或Apache服务器上配置OK后可以直接运行浏览,不用改动任何代码,便于初学者学习研究。 此Demo已在本机测试通过 测试环境:WINDOWS2003+IIS6+...
smartTemplate 简单中文手册
smartTemplate使用举例。一个小demo
企业级PHP开发的模板引擎
[其他类别]SmartTemplate V1.2.1_smarttemplate-1.2.1.zip
smarttemplate 应用案例并生成htmlsmarttemplate 应用案例并生成htmlsmarttemplate 应用案例并生成html
QuickSkin(以前称为SmartTemplate)是一种PHP模板引擎/编译器,旨在支持大规模的基于Web的应用程序。 (HTML-)模板被转换为PHP代码并非常快速地执行。 http://sourceforge.net/projects/quickskin/
基于PHP模块引擎SmartTemplate高校图书管理系统.pdf
对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步...
资源名字:基于php+mysql+smarttemplate的图片共享系统设计与实现(源码+文档)_php_mysql图片共享系统.zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 适合场景...
PHP的Smarttemplate模板技术的最新版更名为Quickskin,是一个轻量级.轻巧,强大,高效的模板引擎,能很好地实现PHP的MVC开发模式
5.模板引擎采用 smarttemplate 6.时间显示更详细 7.安装程序自动建立数据库 9.日志置顶功能 10.发表评论不再需要写标题 11.日志和记事增加表情功能 12.优化的 RSS 13.增加RSS1.0 14.分类可以放在横排也可以...
模板引擎采用 smarttemplate 6.时间显示更详细 7.安装程序自动建立数据库 9.日志置顶功能 10.发表评论不再需要写标题 11.日志和记事增加表情功能 12.优化的 RSS13.增加RSS1.014.分类可以放在横排...
smarty可以直接对url进行编码, 比如<!–{$var|urlencode}–> 但在smarttemplate里面就好像没有,由于链接是由js提交的,而不是表单提交,所以不能自动编码。 解决办法: 采用js对URL中的汉字进行escape编码。 <a>...
[update log]IBArticle 1.0.1 修改了mysql4.1以下版本不能安装的bug 修改了文章内容过长页导致页面变形的bug 将templates模板中管理页面归到admin目录下 重新修改系统样式,可能不兼容ie5 修改unix系统下菜单不好使的...