9

我过去曾在 Joomla 的 x-cart、jobberbase 和 jomestate 组件以及其他一些 Joomla 组件中使用 smarty。我看到 x-cart 中的事情非常紧密地耦合在一起,而且许多事情似乎比 jobberbase 中的事情要复杂得多,我的印象是这是因为 smarty。

现在我将在客户建议的项目中使用 Yii。而 Yii 本身就是 MVC 框架。那么我应该使用 smarty 吗?我想知道我应该使用 smarty 吗,我的意思是在 Yii 中使用 smarty 会有一些优点吗?或不?或者这只是一种开销,还是在其中使用 smarty 会有一些弊端?我对smarty有所了解。但我认为这有时会使事情变得更复杂。所以我想从你们那里知道,这只是由于糟糕的框架而导致的主导思想,或者其中存在一些现实,所以我应该使用 smarty 还是有比这更好的东西?

4

3 回答 3

11

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

Smarty 很棒,因为它可以防止您在一个文件中混合逻辑和视图。MVC 架构定义了控制器(包含逻辑)和视图应该是分开的。我建议您像在 smarty 模板中一样编写视图,但只使用 php 语法。如果您使用的是好的 IDE(如 netbeans),它也会自动缩进您的代码(请参阅 netbeans 中的代码格式)

另请查看控制结构的替代语法

Yii 创作者的可能观点

Yii 本身源自于强雪之前的项目Prado 。Prado 有一种诱人的语言,而 Yii(开箱即用)我不认为这意味着 Qiang 认为模板语言是不必要的。

智能开销

Smarty 模板每次更改都符合 PHP 一次(如果启用了缓存),这意味着大部分开销只发生在第一个请求中,但我假设在额外的函数调用中仍然存在一些开销来检查编译的视图存在,这将影响每个请求。所以 smarty 有开销,但它可能可以忽略不计。

于 2012-04-21T21:16:16.147 回答
2

Smarty 就像任何模板语言一样,是一种昂贵的开销。

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

模板引擎之所以有用,是因为它们嵌入了缓存逻辑。如果您无法自己构建缓存逻辑,请学习它。

于 2012-05-13T13:40:10.027 回答
1

如果编译为 php,Smarty 将不会产生开销。

只有当开发人员和设计师的角色不同时(谁想使用 Smarty),我才会使用 Smarty

除此之外,它只是另一种要学习的语言。

于 2012-04-21T22:29:05.183 回答