goback
月期刊咨询网
当前位置:首页>>计算机应用论文>>正文

模板引擎Smarty介绍


所属栏目:计算机应用论文
发布时间:2011-02-22 16:14:46  更新时间:2011-02-22 16:14:46

已签订领域:化学工程/制药,医学题目:**作为抗癌剂***催化剂**取代苯丙***SCI四区 直击了解更多选题

已签订领域:环境科学-公共卫生题目:用**电***生物传感器**癌症**SCI二区 直击了解更多选题

已签订领域:环境科学-公共卫生题目:**氧化石墨烯纳米***材料的生物传感器***结肠癌生物**癌胚****SCI二区 直击了解更多选题

已签订领域:环境科学-公共卫生题目:聚合物纳米***a-硫辛酸***在神经炎症***应用***临床分析SCI二区 直击了解更多选题

已签订领域:计算机视觉/遥感/智能驾驶/汽车题目:**深度学习***高分辨率遥感***车辆检***SCI三区 直击了解更多选题

已签订领域:企业管理题目:社会交流***领导***倾向***方向SSCI,SCI三区,二区 直击了解更多选题

已签订领域:企业管理题目:**中小企业社交媒体****可持续绩效***因素探析SSCI,SCI三区,二区 直击了解更多选题

已签订领域:环境科学,公共卫生题目:利用硫氨酸***石墨烯纳米***电化学***传感器实现癌胚抗原***SCI二区 直击了解更多选题

已签订领域:环境科学,公共卫生题目:基于抗***纳米复合***高性能***早起癌症诊断***SCI二区 直击了解更多选题

已签订领域:经济,能源题目:***政治冲突****绿色金融、金融**、气***化***SCI四区 直击了解更多选题

已签订领域:经济,能源题目:冲***中能源不安全对***和环境***SCI四区 直击了解更多选题

已签订领域:教育题目:大学生***社交媒体***成绩影响***SSCI三区 直击了解更多选题

已签订领域:教育题目:巴基斯坦***学习实施的***的**SSCI二区 直击了解更多选题

已签订领域:教育题目:大学生对****下网络教学**思***SSCI二区 直击了解更多选题

已签订领域:教育题目:**教师和学生对影响***医疗**效果的****看法SSCI三区 直击了解更多选题

已签订领域:计量经济学题目:**货币、黄金、**和美国***的波动***相互依赖性:**数据的分析SSCI一区 直击了解更多选题

已签订领域:计量经济学题目:东南亚***内**趋同***中等收入**:新**的***SSCI二区 直击了解更多选题

已签订领域:建筑,历史题目:历史景点在***旅游发***中的***影响**(**研究:**历史***)SSCI,SCI一区 直击了解更多选题

已签订领域:领导力,管理题目:量化**领导对角色绩效***响:**冲突与工作自主性***作用SCI二区 直击了解更多选题

已签订领域:信息技术,教育题目:数字***环境对学生学习成绩***:游戏**和***现实在教育***作用SSCI四区 直击了解更多选题

已签订领域:信息技术,教育题目:信息技术***续决策之间的***:创新***识的**作用SSCI二区 直击了解更多选题

已签订领域:信息技术,教育题目:课程**对大学生***发展的影响:学习习惯和***的***作用SSCI一区 直击了解更多选题

已签订领域:信息技术,教育题目:信息技术***与可持续决策**:高等***学生认知***作用SSCI二区 直击了解更多选题

已签订领域:计算机,英语教学题目:英语****学**与人工智能****学习SCI三区 直击了解更多选题

已签订领域:计算机,音乐题目:评价**和音乐**对学生成绩***的影响SCI三区 直击了解更多选题

已签订领域:人体工程,心理学题目:基于预先处理模型***模式人体工程学***女生肌肉骨骼***预防行为*** 直击了解更多选题

已签订领域:人体工程,心理学题目:制定一个***人体工程学**,以识别、优先考虑***职业压力源的*** 直击了解更多选题

已签订领域:人体工程,心理学题目:多重工作**压力和工作***:***工效学方法的混合方法*** 直击了解更多选题

已签订领域:数学,经济题目:数学模型***结构调整和经济转型****研究 直击了解更多选题

已签订领域:数学,经济题目:***时间**数学模型在***媒体营销**中的应用*** 直击了解更多选题

已签订领域:数学,经济题目:***时间**模型在***物流运**能力***研究 直击了解更多选题

已签订领域:数学,经济题目:碳****经济的数学模型****研究 直击了解更多选题

已签订领域:农村经济题目:农****社区**发展***分**SCI四区 直击了解更多选题

已签订领域:农村经济题目:创业***对乡村****发展的****SCI四区 直击了解更多选题

已签订领域:农村经济题目:农村创业****的空间*****究SCI四区 直击了解更多选题

已签订领域:医学,电化学题目:纳米颗粒*****及其在癌症****和重金属*****检测中的应用SCI三区 直击了解更多选题

已签订领域:医学,电化学题目:基于*****前列腺癌药物氟****检测方法的*****腺癌治疗SCI二区 直击了解更多选题

已签订领域:医学,电化学题目:气海***********金纳米颗粒的新型****************粘土及其对胃癌********************抗癌SCI二区 直击了解更多选题

已签订领域:医学,电化学题目:基于抗***********GCE纳米***********材料的高性能*******************早期癌症SCI二区 直击了解更多选题

已签订领域:医学,电化学题目:用******电化学生物传感器*****癌症***************SCI二区 直击了解更多选题

已签订领域:医学,电化学题目:基于*****石墨烯纳米****材料的生物传感******用于测定结肠*****生物*****SCI二区 直击了解更多选题

已签订领域:医学,电化学题目:聚合***纳米复合电极*****疏辛酸电化学检测*********SCI二区 直击了解更多选题

已签订领域:医学,电化学题目:利用****酸/**糖**石墨烯纳米复合修饰的电化学*****SCI二区 直击了解更多选题

已签订领域:环境能源,绿色投资题目:环境能源、绿色投资、城市化和环境类方向SCI三区 直击了解更多选题

已签订领域:计算机,英语教学题目:英语教学**人工智能***习SCI 直击了解更多选题

已签订领域:计算机,音乐题目:评价**和音乐形式*学生***影响SCI三区 直击了解更多选题

已签订领域:经济,绿色投资题目:***能源效率***化之间的***SCI三区 直击了解更多选题

已签订领域:经济政策题目:***阐明**印度经济***的关系SCI三区 直击了解更多选题

已签订领域:经济,金融题目:***国家的能源***重***SCI 直击了解更多选题

已签订领域:经济,金融投资题目:***融新之间***直接投资***SCI三区 直击了解更多选题

已签订领域:经济,数学,统计学,管理学题目:非***想重限制下***袭评价***SSCI四区 直击了解更多选题

已签订领域:经济,数字,管理学题目:基干***生产系统***SSCI四区 直击了解更多选题

已签订领域:农业,土壤科学题目:不同***有机覆盖***养分循环SSCI 直击了解更多选题

已签订领域:电力与能源系统,管理题目:pv***氢定价的***随***型稀SSCI,SCI二区 直击了解更多选题

已签订领域:建筑规划,计算机题目:使用***因子分析法***可持续***SCI三区 直击了解更多选题

已签订领域:工程技术,纺织工程,材料科学题目:甘***淀粉酶的提取***退浆中的应用SCI四区 直击了解更多选题

已签订领域:渔业,鱼类生理学题目:饲料***镉毒性的交互***生长***病理学***SCI二区 直击了解更多选题

已签订领域:渔业,鱼类生理学题目:****鱼水源***起的生******SCI三区 直击了解更多选题

已签订领域:金融,环境经济题目:*****预算在能效、绿色***的作用SCI 直击了解更多选题

已签订领域:应用数学/计算物理题目:***非线性库***自相位调制***SCI三区 直击了解更多选题

已签订领域:计算机,医学检测题目:***COVID-19***力***算法***决策SCI三区 直击了解更多选题

已签订领域:计算机,物联网,智慧城市题目:基于***物联网****算法SCI三区 直击了解更多选题

用PHP实现MVC开发模式的逻辑层和表示层有多种模板引擎可供选择,但是官方引擎SMARTY诞生后,选择就有了变化。它的理念和实现都是相当"前卫"的。本文主要讨论SMARTY之于其他模板引擎的不同特点,简要介绍了该引擎的安装及使用,并用一个小的测试案例对比了SMARTY和PHPLIB template的速度和易用性。

一、MVC需要模板

MVC最早是在SmallTalk语言的开发过程中总结出的一种设计模式,MVC分别代表了"模型"、"视图"和"控制",目的就是让不同的开发角色在大中型项目中各司其职。在网络应用程序的开发中,可以用下图来表示各概念之间的关系。

该图展示了一个简单的WEB应用程序,用户在浏览器上看到信息是数据库服务器上的内容,但在这之前经过了应用服务器加工。开发人员负责的就是建立数据结构、处理数据的逻辑以及表示数据的方法。

96年CGI在中国开始流行的时候,早期的WEB程序员都是从HTML开始自学成材的,在PERL中print一行行的HTML并不是一件难事,但是随着网络的一步步提速,页面大小也从当初的二、三十K暴涨了十倍。写CGI程序就产生了一个迫切的要求:分开PERL和HTML源码。于是,社会进步体现在开发小组内部的分工上。由于美工和程序员对互相的工作并不是十分熟悉,在进行合作的过程中需要用一种约定的"语言"进行交流。

这种语言并不是我们的母语或者英语,术语叫做"模板",逻辑和表示依靠它联系。它是结合了HTML和脚本语言特征的一种表达方式。通过这种方式,表示层可以按照用户所希望的格式来显示经过逻辑层处理过的数据。如果你有Windows平台下MFC的开发经验,那么一定会很熟悉Document/Document Template/View的封装,这就是一个很典型的MVC例子。对于Web应用来说,个人认为J2EE中的EJB/servlets/JSP是最强大的,当然还有简洁优美的Structs。另一个很有名的实现就是COM/DCOM+ASP,这个组合在我国是最多人使用的。

通过几种MVC实现在WEB应用程序里的对比,可以得到一个关于模板的概念:一组插入了HTML的脚本或者说是插入了脚本HTML,通过这种插入的内容来表示变化的数据。下面给出一个模板文件的例子,这个模板经过处理后在浏览器里显示"Hello, world!"

<html>
   <head>
      <title>$greetings</title>
   </head>
   <body>
      $greetings
   <body>
</html>

这里暂且省略处理方式,在后面做专门对比讨论。

二、为什么选SMARTY?

对PHP来说,有很多模板引擎可供选择,比如最早的PHPLIB template和后起之秀Fast template,经过数次升级,已经相当成熟稳定。如果你对目前手中的模板引擎很满意,那么......也请往下看,相信你作为一个自由软件爱好者或者追求效率和优雅的开发者,下面的SMARTY介绍多少会有点意思。

除了个人偏好的影响,我一直倾向于使用官方标准的实现,比如APACHE的XML引擎Axis。好处就是可以获得尽可能好的兼容性(比如早期MFC对于Win3x的兼容性就比其它的应用程序框架好,当然现在各种版本都很完善了)。SMARTY发布之前我一直使用的是 PEAR 中的Integrated Template eXtension。这个引擎和PHPLIB template、Fast template几乎是兼容的,从模板的语法到对模板的处理同出一辙:都是将模板读入内存然后调用parse()函数,用数据对预置的标记进行替换。

下面看看SMARTY是怎么做的。接到request后,先判断是否第一次请求该url,如果是,将该url所需的模板文件"编译"成php脚本,然后redirect;如果不是,就是说该url的模板已经被"编译"过了,检查不需要重编译后可以马上redirect,重编译条件可以自己设定为固定时限,默认的是模板文件被修改。  

怎么样,看起来是不是有点眼熟?想起来了──这不就是JSP的原理嘛!的确,这种"编译"用在PHP这样的解释性脚本引擎上显得匪夷所思,但是仔细想想,JAVA不也是由JVM解释执行的吗?这就叫"没有做不到,只有想不到"。

既然谈到了JAVA,就再对PHP的未来发表一点看法。PHP官方网站上宣布了要在2003年年底发布PHP5.0版。这个版本拥有很多崭新的特性:比如异常处理,命名空间,更加面向对象等等。可以说越来越向JAVA靠拢,SMARTY也是新特性之一,使得PHP更适用于大中型项目的开发。但是似乎离我当初选择它的原因──灵巧易用──越来越远了。但就一个软件的生存周期来看,PHP正处在成长期,开发者赋予它更多的功能,以期能胜任商业应用是利大于弊的。作为PHP的忠实用户,肯定不希望PHP总是被人指责"能力不足"吧?

为什么选择SMARTY,仅仅因为它很像JSP?当然有更为充分的理由。首先,除了第一次编译的成本比较高之外,只要不修改模板文件,编译好的cache脚本就随时可用,省去了大量的parse()时间;其次SMARTY像PHP一样有丰富的函数库,从统计字数到自动缩进、文字环绕以及正则表达式都可以直接使用;如果觉得不够,比如需要数据结果集分页显示的功能,SMARTY还有很强的扩展能力,可以通过插件的形式进行扩充。

事实胜于雄辩。我设计了一个测试程序,通过速度和开发难度这两个因素对比了一下SMARTY和PHPLIB template,选PHPLIB template的原因是在patrick的文章 《在PHP世界中选择最合适的模板》中有一个PHPLIB template对Fast template的竞赛,结果PHPLIB template大获全胜,这使得SMARTY有了一个很好的对手。在测试之前,先谈一下在安装过程中需要注意的问题。


三、可能遇到的问题

在SMARTY的 官方网站上,有详尽的用户手册,可以选择在线HTML和PDF格式的版本。这里就不再涉及手册上已有的内容,只是把初次使用可能遇到的问题做个解释。

第一个问题就很要命:提示说找不到所需文件?并不是每一个人都按照SMARTY默认目录结构来写应用的。这里需要手工指定,假设目录结构如下:

就需要在index.php里指定目录结构:

$smart->template_dir = "smarty/templates/";
$smart->compile_dir = "smarty/templates_c/";
$smart->config_dir = "smarty/configs/";
$smart->cache_dir = "smarty/cache/";

第一个问题解决了,紧接着就是第二个:我刚用Dreamweaver生成的漂亮模板怎么不能用?并不是模板文件有什么问题,而是因为SMARTY默认的标记分隔符是{},不巧的是Javascript肯定包含这个标记。好在我们可以用任意字符当作分隔符,再加上这两句:

$smart->left_delimiter = "{/";
$smart->right_delimiter = "



  • 职称晋升申请书范本2篇

    2025-02-22
    撰写职称晋升申请书时,您需要清晰、专业地展示您的工作成就、专业能力以及对职位提升的渴望。以下是 职称晋升申请书范本2篇 ,您可以根据实际情况进行调整: 1、医、护人员职称晋升申请书范文1篇 尊敬的领导: 本人于xxxx年毕业于xxxx护理专业,毕业后在医院中心监护
  • 高分子化学sci期刊一览 Q1-Q4都在这里

    2025-02-22
    在化学装爷领域中,高分子化学sci期刊众多,按照JCR分区,从Q1到Q4区都有涵盖,作者可根据单位和论文质量选择合适的期刊投稿。以下是 高分子化学sci期刊一览 Q1-Q4都在这里 ,供大家参考: 1、 CHINESE JOURNAL OF POLYMER SCIENCE JCR:Q2区 IF:4.1 致力于发表高分子
  • 2025年RCCSE期刊目录更新到第几版?第七版

    2025-02-22
    截至2025年2月22日,RCCSE期刊目录已经更新到了第七版 。第七版RCCSE中国学术期刊目录是在2024年12月6日至8日召开的第七届中国期刊质量与发展大会上正式发布的,具体详情如下: 1、RCCSE期刊是什么意思 RCCSE期刊是指被武汉大学中国科学评价研究中心(Research Center
  • 论文二审还会给原来的审稿人吗?接受率多少

    2025-02-22
    二审是论文发表期刊过程中最为严格且重要的环节之一,审稿周期较长,建议作者耐心等待。对于, 论文二审还会给原来的审稿人吗 ? 并没有一个统一的答案,可能是原来的审稿人,也可能是新的审稿人,具体取决于期刊的具体政策和审稿人的可用性。 关于论文二审是否还会送
  • 速看!审稿出版最快的教育学SSCI期刊及选题推荐

    2025-02-21
    在教育学领域,被ssci收录的期刊众多,想要选择审稿出版快的期刊,对于新手作者来说确实很难,而且出版周期长短与论文质量、期刊的影响力等因素有直接的关系。今天在这里为大家汇总整理了部分 审稿出版最快的教育学SSCI期刊及选题 ,供大家参考: 一、审稿出版最快的教
回到顶部