个人认为smarty被移出php.net的项目,最大原因是smarty不再被上升到模板引擎的高度。
作为一个模板引擎,smarty并不是最佳选择。国内discuz的高效、原生的blitz引擎都会是比smarty更好的选择。
所以smarty受到大家的冷落。
从前端开发者的角度或者整个程序的架构上讲,smarty的作用却是目前一些简单的模板引擎所不具备的。
SMARTY对于我而言最大的作用是把前端和后端比较彻底地分离了。
对于模板的重用、模板和程序的分离达到了较好的效果。
下面这个例子是模板与程序的深度分离
举例:{$topic.groupName|truncate:14:"..."} 语法简洁,不用再去了解mb_substr和substr的区别。字符串要多长,难道不是前端的事情吗? (就这点,马宝学长如果知道有这种方式,肯定会很高兴的 :) 注:马宝是一设计师,连CSS都不全会)
实际上就是对截取字符串这个函数进行了封装,达到高度的可重用性。smarty在这里起到的作用就是给前端引用后端资源进行了封装和组织。
下面这个例子是模板和模板的分离
此外,在group模块,模板里需要使用用户模块里的东西,如果用户未登录就显示用户未登录,用户已经登录则显示欢迎词。如何才能达到两个模块最大程度的分离呢?
除了模板和模板的分离还需要程序的介入,但是程序之间也需要分离。
我是这样处理的:{include file="view:users/users/userInfo"} view资源是自己定义的,对以一种简单优雅的方式引入模板,进行了组织和进一步处理。
区块、修改器、模板资源等组织形式,对于一个比较复杂的网站完全够用。
在越来越多的人关注div+css重用的今天,实用性比较大。如果blitz能完全实现smarty模板引擎的语法,我很乐意去使用。
Follow Me