![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
本来欧对Smarty等模板引擎的存在及利用深信不疑。只是因为从来没有跳出来好好思考过。
看了几篇文章(推荐,特别是voostind的发言):
http://www.sitepoint.com/forums/showthread.php?t=67849&pp=25
英语不太好,看了几小时。现在应该想想,模板引擎到底给了我们什么?
我想出现这样的争论,焦点在于php本身就是模板语言。
在这种情况下,是不是还需要另外一种语言来完成php的天生功能呢?
我用Smarty开发过两个比较大的网站,原来真的觉得它很不错的。现在跳出来想想,也许事实不是这样。但是很多事情不用它我又觉得麻烦,但是用了它对谁都不好。
这里用过模板的也应该不在少数。模板真的可以解放程序员?
至少在我,页面设计和代码编程都是我一个人。以我用smarty的经历,感觉要写三种程序。呵呵,反而多了很多工作量。
我现在的想法是:
用php本身完成模板的功能,就是把程序和页面设计分开成两个文件。页面设计里只能用简单的输出函数或流程控制。就像smarty提供的 {if} {/if}之类,完全可以用php自己来写。
这样效率方面是不用争议的,比smarty快N倍。
剩下的争议就是:这样是代码和页面分离么?美工会php么?
至于后一个问题,我不觉得有必要讨论。其实smarty那些{if}{/if}美工也不会。程序员还不是得美工完成页面后自己加代码?只不过代码换成了引擎的或者加的少了而已(大部分只是输出)。或者说让美工学学简单的引擎语句呀?那还不如让美工学学简单的php呢。至少简单的php比那个引擎语句好懂也成熟。
不过这样也有严重的问题。比如,我一个项目有几个页面是公开给用户自由设计的。用模板引擎的时候,就是告诉他们有哪些变量可以拿来用。不必考虑他们做出来的模板安全问题或者模板错误(可以截获错误处理,告诉用户出错了回去修改就完事)。
如果纯php模板公开,安全问题是个大问题。就不用多说了。一直没想出解决办法。
不知道这里的牛人们有什么好建议。
那个牛B作者有些话我很赞同。真正的模板是运行在客户端的,不是服务器端。这个角度上看XML/XSLT绝对胜出。用php可以么?
我想如果要做,除了走XML/XSLT外(个人感觉XML处理起来比较慢,会占浏览器和系统很大资源),还有一条路就是客户端脚本(JavaScript)。但是这个方面很不成熟,而且维护起来比较困难。
但是可以实现,而且如果找到一条比较好的路子,这种方法的优势是最明显的:
1。可以最大程度降低服务器负荷,因为服务器只需要把数据从数据库里取出发给客户。而且HTML输出或者UBB代码识别等耗资源的东西完全给客户端。
2。同时也加快页面传输和显示。传输不用说,数据量是最少的。页面显示至少比XML/XSLT快吧。
像最新的动网论坛,显示帖子列表或者帖子浏览都是用JavaScript完成的,而且它里面也是用模板的。模板变量替换都由Js完成了。欧个人觉得这个方法虽然是最烦琐的,但是是最有效的。当然维护起来是最差的。
最近考虑这个问题,是因为最近老是关注效率的问题。
也许效率和方便比起来,还是选择方便。但是要问问自己,模板真的方便了吗?
欢迎讨论,洗耳恭听。如果有最新的好的想法,欢迎交流啊。

