fanso模板简介

fanso模板简介

fanso模板是php爱好者站为本站设计并使用的一套模板。为了方便fanso模板性能的改善和大家的使用以及自己的提高,所以将此模板公开。希望大家可以对它进行改善与扩充。该模板参考了smarty的源码和语法。语法与smarty大同小异,但更少的冗余代码和更快的执行速度。

为什么要设计fanso模板

      MVC需要模板。MVC分别代表了"模型"、"视图"和"控制",目的就是让不同的开发角色在大中型项目中各司其职。在网络应用程序的开发中,如果可以将逻辑与表示分开,程序员和美工同时进行工作,那一定会大幅度提供工作效率。模板正是要实现这种功能。

      传统模板的局限性。 smarty像php一样有丰富的函数库,从统计字数到自动缩进、文字环绕以及正则表达式都可以直接使用;smarty还可以通过插件的形式进行扩充。如此多的功能不可能在项目开发中都用到。像一些需要实时更新的内容,这类型的程序使用smarty会使模板处理速度变慢。不适用于小项目。小项目使用smarty会增加大量的冗余代码。因此smarty更适合于大中型项目的开发。使用smarty开发小项目会丧失php开发迅速的优点。

      fanso模板,为用户定义了几种最基本最常用的语法。这些语法能够满足用户的基本需要。更少的冗余代码。更快的速度。

fanso模板是编译型模板

      模板又分为编译型和解释型。解释型模板仅仅是对html里的变量进行替换。所以每次接到请求后都要对html里的变量进行替换一遍。这无余降低了程序的效率。而编译模板接到请求后,先判断是否第一次请求该url,如果是,将该url所需的模板文件编译成php脚本,然后重定向;如果不是,就是说该url的模板已经被编译过了,可以马上重定向。除了第一次编译的成本比较高之外,只要不修改模板文件,编译好的cache脚本就随时可用,省去了大量的解释时间。 而这就是编译型比解释型快的原理了。fanso模板是一个编译型模板。


fanso模板能做什么

      fanso模板分开了逻辑程序和外在界面的内容,提供了一种更易于管理的方法,协调程序员和美工的工作。在web编程中,最好让应用程序逻辑远离页面表现, 页面表现远离应用程序逻辑。这将在以后使得系统更容易管理,程序更容易升级。

      相对于传统的php编程,php脚本和html混杂在一起。使用模板更易于修改和维护。

fanso模板性能比较

下面用一个简单的程序对各种模板的性能进行测试。

section.php

[复制到剪切板]
CODE:
<?php 
function gettime()
{
    
$t explode(" ",microtime());
    return 
$t[1] + $t[0];
}

$start gettime();

//require_once ("./libs/Smarty.class.php");
//$smarty = new Smarty();

require_once ("./libs/fanso.class.php");
$smarty = new Fanso();

$array[]= array("newsID"=>"001""newsTitle"=>"第1条新闻"); 
$array[]= array("newsID"=>"002""newsTitle"=>"第2条新闻");
$array[]= array("newsID"=>"003""newsTitle"=>"第3条新闻");
$array[]= array("newsID"=>"004""newsTitle"=>"第4条新闻");
$array[]= array("newsID"=>"005""newsTitle"=>"第5条新闻");
$array[]= array("newsID"=>"006""newsTitle"=>"第6条新闻");
$array[]= array("newsID"=>"007""newsTitle"=>"第7条新闻");
$array[]= array("newsID"=>"008""newsTitle"=>"第8条新闻");


$smarty->assign("News"$array);
$smarty->display("example4.tpl");

echo 
gettime() - $start;
?> ;


example4.tpl

[复制到剪切板]
CODE:
<html>
<
head>
<
title>
fanso模板测试
</title>
<
head>
<
body>
{
assign var="UserName" value="php爱好者"
这里将显示模板内部定义的一个变量:UserName = {$UserName}

<
table border="1" align="center">
{
section name=loop loop=$News start=2 step=2}
<
tr bgcolor="{cycle values="#eeeeee,#d0d0d0"}">
<td>{$News[loop].newsID}</td>
<
td>{$News[loop].newsTitle}</td>
</
tr>
{/
section}
</
table>
{
php}
echo 
"执行时间:";
{/
php}
</
body>
</
html> ;

模板名称 第一次请求(秒) 第二次请求(秒) 第三次请求(秒)第四次请求(秒)
Smarty 0.73374891281128 0.044282913208008 0.031402826309204 0.053926944732666
fanso模板 0.056071996688843 0.022472858428955 0.013705015182495 0.016438007354736

可以看出,fanso模板速度更快,大家可以自行测试下。
毕业了。。。

很好啊,很完美。

看了一下 没什么新意

引用:
原帖由 muqiao 于 2007-6-27 22:24 发表
看了一下 没什么新意
你认真看了再来评论吧。测试了一下。速度的确快

不错把smarty给浓缩了

引用:
原帖由 muqiao 于 2007-6-27 22:24 发表
看了一下 没什么新意
不要光会用别人的。


很简单,很实用,是学习的好模板。

强烈支持!
好!

和 smarty 比 有什么优势么? 毕竟稳定性之类的问题也要关心的

速度和更少的冗余代码
如履薄冰

简单就好