改进过的 TemplateLite
TemplateLite 介绍
1、几乎与
Smarty 完全兼容(有些 Smarty 的特性不支持,不过这些特性也很少人用);
2、体积小一半,因此载入速度也更快;
3、结构更模块化,运行时载入的
文件更少。
我最近做的
项目就用的 TemplateLite,感觉非常不错。Smarty 模版拿过来直接就用,根本不需要修改。
在 FleaPHP 1.0.70 中,专门提供了一个 SmartyHelper 类,用于增强 Smarty。这个类也同时适用于 TemplateLite。
对 TemplateLite 的改进
基于 TemplateLite 2.10 修改,主要增强了 include 的功能。
默认情况下,{ include file="header.html" } 会导致编译后的模版文件在显示时用 <?php include() ?> 来载入文件。
假如你的模版中用到了多个 { include },那么最终编译后的模版文件显示时会载入多个文件。
例子:
复制内容到剪贴板
代码:
{ include file="header.html" }
{ include file="menubar.html" }
// BODY
{ include file="footer.html" }最终编译后的模版可能是:
复制内容到剪贴板
代码:
<?php include('c_header.php'); ?>
<?php include('c_menubar.php'); ?>
// BODY
<?php include('c_footer.php'); ?>也就是说为了显示一个
页面,需要载入四个编译后的模版文件。
对于
PHP 来数,include 太多的文件会导致性能显著下降,所以我对 include 进行了改进,尽量减少编译后的模版需要载入的文件数量。
新的用法:
复制内容到剪贴板
代码:
{ include file="header.html" import=true }
{ include file="menubar.html" import=true }
// BODY
{ include file="footer.html" import=true }这时会把 header.html 等三个模版文件的内容嵌入到编译后的
模板文件中,因此在显示编译后的模版文件时就减少了三次 <?php include ?> 操作。
我目前正在做的一个
应用中,这样优化后,可以少载入近10个文件。用 apache bench 测试,性能有明显提高。
除了增强 include,还有一两处小错误,也修正了。