憋了很久,我终于还是要问一下,Smarty究竟有何用?

softfc 2012-03-08 04:28:16
我去百度,大家都说,它提供了逻辑与外在内容的分离,有利于程序员与美工更好的合作,千篇一律。提供缓存云云。。。

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

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

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

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

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

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

它,但如果没有,我就更不解了
...全文
671 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
nicholashei 2012-07-24
  • 打赏
  • 举报
回复
smarty用的人多,有利于快速地组建开发和美工团队合作。

框架里的view美工不太会用。

kankan231 2012-07-21
  • 打赏
  • 举报
回复
对smarty表示蛋疼。。
vicallee 2012-07-20
  • 打赏
  • 举报
回复
mvc是个好东西,出于安全,和解耦的考虑。
smarty只是一个实现,确实不是很好,代码量大了不够简约,学习代码高,调试代价高。
所以你可以自己写个入口,和template机制就行了,也就一种机制一个php,很简约的。我一直就这么做,即使在做医院管理系统这么多数据表的情况下,也可以很简约。
kyzy_yy_pm 2012-07-13
  • 打赏
  • 举报
回复
就本质来说Smarty不过是将php和模板分离而使代码更加清晰而已,没感觉出有什么特别的,至于说“有利于程序员与美工更好的合作”我不认同,不用Smarty也能很好的和美工合作,因为一般都是美工弄完后台套模版,所以和美工与程序员合作这一条根本没啥关系,至于缓存什么的,php自己照样能
飞凡的陀螺 2012-07-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

smarty的设计是给美工用, 是給smarty程序员用。 php程序員用php, 去写逻辑层, 但通常还要兼任美工职位。
[/Quote]
逻辑和模版分的越清楚,smarty的优势应该越明显吧,但现实php程序员又当了前端的工作,有时候是逻辑输出会里带js判断,模版里带一堆<??> 滥用的。
偷蚊子的哦 2012-07-12
  • 打赏
  • 举报
回复
LZ的统称应该是不明白为什么要用模版引擎(smarty是一种),我来说说吧
使用模版引擎的好处是:
1. 将输出部分脱离业务逻辑部分,使得可以单独处理,避免软件深耦合
2. 多同事合作的中间语言
3. 提供缓存等更多性能上的选择

我们开发软件,会将软件分为很多的部分,这样便于软件代码的重用性,正因为如此,才会有smarty这种的开源类库出来。等你学会了团队协作、高并发软件开发 你就明白了
蹲坑看月亮 2012-07-10
  • 打赏
  • 举报
回复
各有各的好处吧,喜欢用就用吧,不喜欢就换呗~~
xcode21 2012-07-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

简单点说。利于后期换模板。不用动逻辑的业务。直接套模板就行
[/Quote]

我倒感觉,不换模版可以很方便换框架或者逻辑代码 ^_^
phf0313 2012-03-10
  • 打赏
  • 举报
回复
用smarty主要是为了代码和html页分离
ci1699 2012-03-10
  • 打赏
  • 举报
回复
我就对smarty不怀好感。
个人产品建议不要用smarty。
模板的语法基本都是替换成了php代码运行,又多走了一步。

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

还有上面朋友说的缓存。。smarty的缓存都不是缓存吧。
只是缓存了php代码,免又匹配替换一次。
天魔雷帝 2012-03-10
  • 打赏
  • 举报
回复
我觉得Smarty出了能实现M层和V层的分离外,最大的用处还是他的缓存处理技术,个人见解,其实只是一个框架,技术够好的你可以不用
helloyou0 2012-03-09
  • 打赏
  • 举报
回复
你的想法很对,这也是现在很多框架提倡直接使用php作为模板语言的原因.

但是...smarty的产生和流行是在大部分php mvc框架流行之前!!
就是说,smarty对view从其它部分中分离出来起了推动作用.

另一方面,因为smarty从语法层面对view中可用的操作起了限制作用, 也能限制一些太自由化的程序员....
就是用mvc,如果用php做模板,虽然你不会影响c,但是有些程序员还是能把很多东西塞进view里去,造成view的混乱....




[Quote=引用 6 楼 softfc 的回复:]

引用 3 楼 coolesting 的回复:
c和v层分离开发之后, 无论smarty程序員怎么修改samrty模板, 也不会影响到c层的关系逻辑。

在smarty模板里约定不用 <?php ?> 标记, 其实道理和上面一样, 如果美工的非常傻逼, 乱修乱改, 也只是影响显示内容, 而不会对整个应用程序造成实质性破坏。

这就是smarty的作用。

我觉得,这个观点对哈,
[/Quote]
softfc 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 coolesting 的回复:]
c和v层分离开发之后, 无论smarty程序員怎么修改samrty模板, 也不会影响到c层的关系逻辑。

在smarty模板里约定不用 <?php ?> 标记, 其实道理和上面一样, 如果美工的非常傻逼, 乱修乱改, 也只是影响显示内容, 而不会对整个应用程序造成实质性破坏。

这就是smarty的作用。
[/Quote]
我觉得,这个观点对哈,
miss_once 2012-03-08
  • 打赏
  • 举报
回复
简单点说。利于后期换模板。不用动逻辑的业务。直接套模板就行
coder 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 softfc 的回复:]
我去百度,大家都说,它提供了逻辑与外在内容的分离,有利于程序员与美工更好的合作,千篇一律。提供缓存云云。。。

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

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

框架不管是网上流行的还是自己封装的,无一例外都是mvc模式,所以,即使不用s……
[/Quote]

呵呵,主啊。不要困扰了。这个问题是个哲学问题。其实跟本没有绝对的东西。

smarty其实最宝贵的。就是缓存。虽然它的缓存很“蹩脚”。
这个还和时间有问题。在php,smarty,模板,缓存刚刚出来的时候,很好,也得到了认可。所以大家都用,慢慢的随着时代的发展。现在又有流行的php框架,缓存,等等更多的东西,所以就觉得显得smarty的能力弱了。

就和普通手机和智能手机相比一样。






骄傲青蛙 2012-03-08
  • 打赏
  • 举报
回复
c和v层分离开发之后, 无论smarty程序員怎么修改samrty模板, 也不会影响到c层的关系逻辑。

在smarty模板里约定不用 <?php ?> 标记, 其实道理和上面一样, 如果美工的非常傻逼, 乱修乱改, 也只是影响显示内容, 而不会对整个应用程序造成实质性破坏。

这就是smarty的作用。
骄傲青蛙 2012-03-08
  • 打赏
  • 举报
回复
smarty的设计是给美工用, 是給smarty程序员用。 php程序員用php, 去写逻辑层, 但通常还要兼任美工职位。
xuzuning 2012-03-08
  • 打赏
  • 举报
回复
smarty 是模板引擎
php中的 模板引擎 的作用是把 php 代码和 html 代码分离开来
仅此而已

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

smarty 在模板中引入了流程控制,并形成了一个由 php 解释执行模板语言。
个人认为有画蛇添足之嫌,也是我不看好的原因

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧