2012-04-20 37 views
9

我在过去,在Joomla的x-cart,jobberbase和jomestate组件以及一些其他Joomla组件中使用了smarty。我发现事物与x-cart非常紧密地联系在一起,许多事情似乎比在jobberbase中更加复杂,我的印象是这是因为聪明。我应该像使用Yii一样使用MVC的smarty模板引擎吗?

现在我打算在一个项目中使用Yii,由客户建议。而Yii本身就是MVC框架。那么我应该用smarty吗?我想知道我应该使用smarty,我的意思是说在Yii会有一些使用smarty的优点吗?或不?或者它只是一个开销,或者会有一些使用smarty的缺点?我对smarty有所了解。但我认为这有时会让事情变得更加复杂。所以我想从你们那里知道,那是因为糟糕的框架而成为一个占统治地位的思想,或者有一些现实,那么我应该使用聪明还是还有其他更好的东西呢?

回答

11

作为曾经在Yii之前使用smarty的人,我会说没有意义。

Smarty很棒,因为它阻止了你在一个文件中混合逻辑和视图。 MVC架构定义控制器(包含逻辑)和视图应该分开。我建议你在smarty模板中编写你的视图,但只需使用php语法。如果您使用的是良好的IDE(如netbeans),它也会自动缩进您的代码(see code formatting in netbeans)

也看看

Yii的本身是从Prado衍生Alternative syntax for control structures

可能意见Yii的创造者是薛强以前的项目。普拉多有一种诱人的语言,Yii(开箱即用)并不认为这意味着Qiang认为模板语言是不必要的。

Smarty的开销

Smarty模板都遵守到PHP每一次变化(如果启用了缓存),这意味着大部分开销仅发生于第一次请求,但我认为还是有额外函数中的一些开销调用来检查编译视图是否存在,这会影响每个请求。所以有一个聪明的开销,但它可能可以忽略不计。

+0

我理解备用语法,但只是想知道在使用已有的MVC架构时smarty有没有什么优势?还是会有开销? – Hafiz 2012-04-21 21:50:58

+0

这完全取决于你会考虑smarty的优势吗? – 2012-04-22 12:15:44

+0

在定制应用程序中使用smarty和在框架中使用smarty没有区别。混合观点和逻辑总是不好的做法IMO。但是,如果你对自己和其他开发人员严格要求,那么你不需要聪明来执行该操作。 – 2012-04-22 12:34:40

1

如果编译为php,Smarty不会被开销。

我只会用Smarty的时候有开发商和设计师(谁想要使用的Smarty)的独立角色

比它只是另一种语言来学习其他。

2

与任何模板语言一样,Smarty的开销很大。

正如Rasmus Lerdorf所言,PHP已经是一个模板引擎。是否有任何理由在PHP中添加其他控件结构的语言?

模板引擎仅用于嵌入缓存逻辑。如果你不能自己构建一个缓存逻辑,那么学习它。

+1

您不需要在yii中使用模板引擎来创建缓存逻辑,您可以激活缓存中的内置版本 – darkheir 2013-05-14 08:17:25

相关问题