免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: HonestQiao
打印 上一主题 下一主题

[模板 下载地址更新] SmartTemplate(适用于企业级PHP开发的模板引擎) [复制链接]

论坛徽章:
0
1 [报告]
发表于 2005-12-13 13:07 |显示全部楼层
Smart Template 到底有用没用?

我认为基本上没什么实用价值,原因如下:

第一:功能太简单。既无法提供 Smarty 那样的扩展能力,又缺乏更新版本支持和各种插件;

反方意见:我根本用不上那么多功能啊,我干嘛要用 Smarty 这个庞然大物?
我说:那你不如直接用 php 做模板得了,还要什么模板引擎啊,多此一举!
反方意见:可我要允许用户自行修改模板,这个时候嵌入 PHP 代码很危险哦!
我说:如果你的系统是允许普通用户修改模板,那么这个时候应该使用模板系统,
不过不是用 Smart Template,而是 Smarty!

首先,Smarty 提供了丰富得多的功能。
其次,你可以开发各种插件,把原本需要好几行的模板代码简化成一个标签,
例如我开发的一套 Smarty 插件,允许使用下面形式的标签:
<% CMSEntryBody title="我的第一次" %>
就会输出标题为“我的第一次”这篇文章的内容。这样用户不但在模板里面就能
输出内容,还能控制输出什么。

这些用 Smart Template 是做不到的哦!


第二:根本不存在什么更容易学习的神话;
反方意见:不都说了 {TITLE} <!-- IF --> 看上去比
<?php echo $title ?> <?php if ?> 更简单吗?

我说:幻觉而已!对程序员来说,模板自身的语法反倒增加了学习成本。
而对于美工来说,有必要学么?

如果要美工掌握如何嵌入循环、判断这些,和让他搞懂 <?php if else ?> 完全没区别。
可实际工作中,有几个美工能嵌代码啊?还不就是做图、切图、做成页面,
然后由程序员来嵌代码。

有人要说了:你可以教啊,教会了美工,他自己就能嵌代码了!你就解放了!
我要说:解放个屁啊!

嵌代码总要预览一下效果吧?你还得帮他在工作机上安装配置 php、mysql 这些。
如果你改了数据结构,还要记得同步到他的机器上。
最后,他不看程序能知道页面里面该嵌什么变量?
所以他还得不停的问你这个嵌什么、那个嵌什么。

如果他能看懂程序,那他还是美工么?

所以说,让美工嵌代码只是一种幻想而已!


第三:Smart Template 的有些特征难以使用
像 Smart Template 的 cache 功能就特别难用,在面向对象的体系中如果不修改
Smart Template 自身,几乎无法将 Smart Tempalte 集成到系统中来。

其他还有些细节问题也设计得不好,越用越不爽。


我以前觉得 Smart Template 小巧玲珑,挺方便的。后来做点复杂的东西才知道根本
不是那么回事。不但要改 Smart Template 自身,还要补充很多扩展功能,累啊!

所以我现在要么用 php 作模板,要么用 smarty。

论坛徽章:
0
2 [报告]
发表于 2005-12-13 22:44 |显示全部楼层
探讨:
关于例子,SmartTemplate本身就有load_config,把你这样子类似配置的部分,直接使用一个配置文件了。


load_config 和我说的自定义标签是两码事哦。我可以用这个自定义标签实现很多功能,而 load_config 仅仅是载入配置文件而已。

对于程序员而言,使用任何一个模板系统,语法他都要学,这个并不是SmartTemplate的错或者缺点,但是你拿来专门说。
对于美工而言,{TITLE}这样子的方式(甚至{文章标题}),他可以很容易的看到实际的效果,而<??>的方式,势必要差一些。
所谓让美工嵌代码,那当然是幻想。但是程序和美工是可以很好的协作分工的。


这点我赞成,任何模版都需要学习。当时我打那段话还有一段,可能不小心按 ctrl_z 弄丢了。也是提到 {TITLE} 这样的形式在 DW 预览起来效果更好,而 <!-- --> 来设置控制结构又不会破化页面布局。

让美工和程序员融洽协作,选择什么模版系统只是很小一个方面,重要的再于美工到底能不能理解到 HTML 标签的作用。

因为如果美工连 HTML 标签都搞不懂(很多美工只会在预览模式下画表格),那么对于修改嵌入了代码的模版自然会很头痛。



最后,我要特别说一下 Smart Template 的 use_cache()。

这个方法判断当前模版内容是否有缓存版本,如果有且没有失效,则直接读取缓存文件并输出,然后。。。。。

然后,会执行 die()。这是一个严重的设计失误!


这个问题在复杂的应用程序里面很严重。例如我需要获取生成的内容做其它用途(保存到数据库、发送电子邮件),或者在输出之后追加其它内容,那么我势必不能使用 use_cache() 方法,从而也就放弃了 Smart Template 的 cache 功能。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP