我从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的功用.
如果有想要的.可以邮件/站内短信给我.提供给大家.
分享到:
相关推荐
- **扩展性**:通过`smarttemplate_extensions`目录下的扩展,可以增加自定义功能或修改默认行为。 - **缓存机制**:可能支持编译后的PHP代码缓存,减少每次请求时的编译时间。 - **多语言支持**:可能提供多语言...
当ThinkPHP框架的用户需要使用Smarty作为模板引擎时,可以通过一些特定的配置和修改来实现。 在ThinkPHP使用Smarty作为第三方模板引擎时,首先需要在配置文件中开启插件,并指定模板引擎类型为Smarty。具体操作包括...
13. **模板引擎**:虽然ASP本身不包含现代模板引擎,但开发者可能会选择使用第三方库,如SmartTemplate或FreeTextBox,以增强模板渲染能力。 在“ASP源码—简单文章系统.zip”这个压缩包中,132684749262703310可能...
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
wrf转mp4播放器1.1.1
内容概要:本文档详细介绍了如何在Simulink中设计一个满足特定规格的音频带ADC(模数转换器)。首先选择了三阶单环多位量化Σ-Δ调制器作为设计方案,因为这种结构能在音频带宽内提供高噪声整形效果,并且多位量化可以降低量化噪声。接着,文档展示了具体的Simulink建模步骤,包括创建模型、添加各个组件如积分器、量化器、DAC反馈以及连接它们。此外,还进行了参数设计与计算,特别是过采样率和信噪比的估算,并引入了动态元件匹配技术来减少DAC的非线性误差。性能验证部分则通过理想和非理想的仿真实验评估了系统的稳定性和各项指标,最终证明所设计的ADC能够达到预期的技术标准。 适用人群:电子工程专业学生、从事数据转换器研究或开发的技术人员。 使用场景及目标:适用于希望深入了解Σ-Δ调制器的工作原理及其在音频带ADC应用中的具体实现方法的人群。目标是掌握如何利用MATLAB/Simulink工具进行复杂电路的设计与仿真。 其他说明:文中提供了详细的Matlab代码片段用于指导读者完成整个设计流程,同时附带了一些辅助函数帮助分析仿真结果。
国网台区终端最新规范
《基于YOLOv8的智慧农业水肥一体化控制系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
GSDML-V2.33-LEUZE-AMS3048i-20170622.xml
微信小程序项目课程设计,包含LW+ppt
微信小程序项目课程设计,包含LW+ppt
终端运行进度条脚本
幼儿园预防肺结核教育培训课件资料
python,python相关资源
《基于YOLOv8的智慧校园电动车充电桩状态监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
deepseek 临床之理性软肋.pdf
SM2258XT量产工具(包含16种程序),固态硬盘量产工具使用
RecyclerView.zip
水务大脑让水务运营更智能(23页)