日期:2014-05-17  浏览次数:20397 次

憋了很久,我终于还是要问一下,Smarty究竟有何用?
   我去百度,大家都说,它提供了逻辑与外在内容的分离,有利于程序员与美工更好的合作,千篇一律。提供缓存云云。。。

   我接触过的很多项目也在用smarty,我很不解。

   我平时用的最多的smarty语法就是foreach 还有就是 if判断,有时候用一下里面的函数,因为现在好多的项目都是用现成的

框架不管是网上流行的还是自己封装的,无一例外都是mvc模式,所以,即使不用smarty模板,页面上也不会有什么逻辑代码,页

面上只有一些foreach,if 或一些基本的函数,只是写法不一样罢了,smarty标签可以自己定义,例如 {},而php标签<??>,

<?php ?>,在mvc思想上写代码即使不用smarty页面也照样干净啊,而且还可以灵活的用php里面的函数,有什么不好?

    如果说提供缓存,我对smarty研究不深,不知道是不是说的它里面的页面纯静态化,如果有的话,我还可以理解为什么用

它,但如果没有,我就更不解了

------解决方案--------------------
smarty 是模板引擎
php中的 模板引擎 的作用是把 php 代码和  html 代码分离开来
仅此而已

缓存 属于另外的机制,在 smarty 中是附属功能。在 smarty 出生的时候,基本被没有什么框架可供使用

smarty 在模板中引入了流程控制,并形成了一个由 php 解释执行模板语言。
个人认为有画蛇添足之嫌,也是我不看好的原因
------解决方案--------------------
我就对smarty不怀好感。
个人产品建议不要用smarty。
模板的语法基本都是替换成了php代码运行,又多走了一步。

那一些开源产品为什么用smarty类似产品或作法呢? 
我觉得有一个重要的原因就是考虑到安全。
只允许你使用程序员设计的那些方法,这样一来美工、模板设计者就不会糊搞拉。
又不搞了一个rmdir那不得了拉。

还有上面朋友说的缓存。。smarty的缓存都不是缓存吧。
只是缓存了php代码,免又匹配替换一次。