CodeIgniter + Smarty - 是不是相关?

Posted

技术标签:

【中文标题】CodeIgniter + Smarty - 是不是相关?【英文标题】:CodeIgniter + Smarty - is it relevant?CodeIgniter + Smarty - 是否相关? 【发布时间】:2013-10-19 14:31:02 【问题描述】:

我正在创建一个新网站,第一次使用 CodeIgniter。在视图中,编写了 php 代码。我正在考虑将代码与显示完全分开,就像我几年前使用 Smarty 所做的那样。

我找到了 CodeIgniter 提供的模板引擎:http://ellislab.com/codeigniter/user-guide/libraries/parser.html

但在页面内部,我发现了这个注释:

注意:CodeIgniter 不需要您使用此类,因为在您的视图页面中使用纯 PHP 可以让它们运行得更快一些。但是,如果一些开发人员与他们认为使用 PHP 会感到困惑的设计师一起工作,他们更喜欢使用模板引擎。

所以,我需要一些帮助来选择正确的东西。我应该使用纯 PHP 吗?当编码风格已经是 MVC 时,使用这样的模板引擎有什么好处?用Smarty会更好吗,我已经知道了一点?

该网站需要非常安全且非常快速,将使用大量 AJAX(我也想安装一个 websocket,但没有指向当前问题的链接)。

感谢您的帮助!

【问题讨论】:

一般来说,最好使用模板系统来分离关注点,而不是将随机的 PHP 与 HTML 打印混合。模板引擎成为应用程序瓶颈的可能性非常低。 所以你会推荐使用一个,无论是原生 CI 还是 Smarty ? CI 的模板解析器无法与 Smarty 相提并论,它们完全不同。无论如何,使用任何你想要的。 完全不同,但目标是一样的,从显示中取出PHP代码,我错了吗? 【参考方案1】:

如果您需要快速的应用程序,那么您在选择 Codeigniter 时会受到很大启发,因为它是一个非常轻量级的框架,并且在不涉及缓存的情况下可以很容易地解决大多数速度问题。

有一种说法,除非你需要,否则你不应该扩展,我认为它在这里非常适用。除非您显示兆字节的数据,否则我看不出选择模板引擎会如何损害应用程序的整体速度。如果确实发生了这种情况,您可以随时查看缓存一些响应/各种其他信息或第三方解决方案(即 Gearman),这目前可能有点过头了。

如果您想学习新知识,请使用 Codeigniter 模板库;如果您需要快速开发某些东西,请使用您最了解的工具。作为偏好,我喜欢 Twig,并且有一个 CI 实现,称为 Twiggy:http://edmundask.github.io/codeigniter-twiggy/

至于安全性,我想说它不如 Symfony 或 ZF2 等更强调这一点的企业级框架强大。它们本身就是更完整的包,并且通过缓存,它们的执行速度非常快,但它们具有更高的学习曲线。

更新:我的意思是,除非您显示大量数据,否则您不应该考虑模板引擎的速度,否则对您的页面的影响可以忽略不计渲染速度。不要以为用户会注意到它,因为执行时间的 0.0x 量级并不明显。在这里查看 SMARTY 和 Twig 之间的比较:http://umumble.com/blogs/php/249/

Smarty 的执行时间为 0.058 秒,而 Twig 的执行时间为 0.083 秒。模板引擎总是带来开销,它们的优势在于它们使开发更容易,并且在与设计师合作时会有所帮助。

【讨论】:

感谢您的回答!非常清楚。只有一件事你没有回答:为什么还要在这里使用没有任何缓存的模板引擎,而 CI 的文档说它会变慢?关于安全性,好吧,我想我将不得不仔细编码:) @JeremyBelolo 嘿伙计,更新了我的答案。让我知道现在是否更清楚了! 谢谢,实际上是的,它更清楚了。我想我会和 Twig 一起去!【参考方案2】:

如果你想使用模板引擎,我建议使用 Twig。 http://twig.sensiolabs.org/

【讨论】:

它有什么比 Smarty 或 CI 的原生解决方案更好的? CI 的原生解决方案只是 PHP,如果您想使用模板引擎,这根本不是解决方案。 :) Twig 由 Symfony 的创建者 SensioLabs 维护。它备受推崇,易于使用且速度非常快。作为个人喜好,我更喜欢 Twig 语法而不是 Smarty。

以上是关于CodeIgniter + Smarty - 是不是相关?的主要内容,如果未能解决你的问题,请参考以下文章

Smarty 集成到 CodeIgniter 框架中

Smarty集成到CodeIgniter框架中

在codeigniter中,大家使用smarty吗?

退出 Smarty 手动完成

php smarty是不是可以调用上级或同级目录的模板

php smarty 配置