纯PHP/HTML视图与模板引擎视图

纯PHP/HTML视图与模板引擎视图,html,templates,smarty,twig,Html,Templates,Smarty,Twig,我想知道哪种方法更快,在HTML文件中使用纯PHP还是使用Smarty、Twig等模板引擎。。。 我特别想知道的是下一个问题:哪一个解析速度更快,例如Smarty缓存是否比使用纯PHP更快? 哪个模板引擎最快?我将要重写一个简单的应用程序,其中速度是第一位的。所有问题的答案都是“取决于” 什么是“更快”?执行时间?开发时间?维修内存开销?它们的混合物?模板引擎通常以一些性能(速度、内存)换取更好的开发和维护 如果您谈论的是纯动态模板(意思是:对每个请求都评估模板),PHP将超过任何模板引擎。这真

我想知道哪种方法更快,在HTML文件中使用纯PHP还是使用Smarty、Twig等模板引擎。。。 我特别想知道的是下一个问题:哪一个解析速度更快,例如Smarty缓存是否比使用纯PHP更快? 哪个模板引擎最快?我将要重写一个简单的应用程序,其中速度是第一位的。

所有问题的答案都是“取决于”

什么是“更快”?执行时间?开发时间?维修内存开销?它们的混合物?模板引擎通常以一些性能(速度、内存)换取更好的开发和维护

如果您谈论的是纯动态模板(意思是:对每个请求都评估模板),PHP将超过任何模板引擎。这真是个无名小卒。如果您考虑缓存,像Smarty这样的模板引擎可能会有所帮助。不过,缓存并不是普通PHP无法实现的。有了Smarty,这一切都是为你而做的(而且比你可能做的要复杂得多)

如果您使用的是一个框架,比如Symfony,那么使用Twig可能是明智的,因为Twig和Symfony是紧密集成的。当然可以使用Smarty或普通PHP。这里的问题是:这是否可行

从数据库或远程API等数据源构建站点时,缓存是有意义的。在这里,您真正节省(从某种意义上说是减少)的是数据库调用、密集计算等。请检查您是否有任何时间密集型功能运行以构建站点。如果是这样,请使用缓存(如果可以)

了解开发/维护/便利性/性能权衡,我(总是)建议使用模板引擎。作为一名Smarty开发人员,我当然会建议使用Smarty。这就是说,除非您使用Symfony,否则您可能会更好地使用Twig。或者一些其他框架具有一些其他模板引擎

请忽略像这样的帖子,因为它们只比较了非常有限的引擎视图。不要相信你,你没有伪装自己™.


但总的来说,Smarty 3.1比Twig快一点。Twig在运行时(执行模板时)做了很多事情,Smarty在编译时(准备执行模板时)做了很多事情。小树枝在这里并不是真的在浪费速度。Twig需要根据设计在运行时做某些事情。他们用一点性能换取了一点“便利”(例如,使用相同的符号访问数组和对象)。

我将再次讨论这一点,因为情况发生了重大变化,前面的答案中缺少一些证据

没有深入了解为什么框架在PHP上使用模板引擎,而大多数框架都是这样做的。出于某种原因,人们一直在努力用另一个抽象层“修复”PHP。始终以简单而不丧失多功能性或性能为宗旨

无论如何,使用PHP仍然是最快、最通用的模板制作方法。PHP在它看来很像一种模板语言。但是让我们看看PHP的进展,并将它们并排放置。

Twig和其他一些人声称缓存的东西在早期版本的PHP中一直是一个插件。缓存现在是一种(Opcache),因此使用PHP作为模板语言将提供更多性能增强

Twig和其他人声称对设计者来说语法很简单。在比较中,您将看到逻辑与使用模板系统(如Twig)的唯一好处相似,Twig是设计器和底层系统代码之间的另一层安全隔离

两个非常流行的CMS Wordpress和Drupal使用PHP作为模板引擎。因此,在设计网站时使用模板引擎来保护和简化PHP使用的旧观点在今天的web中并不真正有效。Drupal8转向Twig,主要是因为Twig是Symfony框架的一部分(回到为什么框架使用模板引擎)。另一方面,Wordpress仍在使用PHP。随着Wordpress的飞速发展,网页设计师使用PHP来帮助实现这一点。Drupals社区也因决定使用Twig和Symfony而部分分裂

因此,就性能而言,使用PHP似乎是更好的选择,但同时也是主题设计师和设计师未来的首选。至少所有的证据都得出了这个结论

这么说来,这是我毫无根据的观点。我认为,在今天的web中,使用PHP以外的任何东西作为模板引擎都会掩盖底层框架或web应用程序体系结构中的一些固有缺陷。这一弱点在设计师或更高层次上无法轻易解释


如果您正在编写一个轻量级的应用程序,那么它必须很小。通过使用PHP使其保持小型化和最佳性能,并将其他引擎留给“企业”级别的组和项目,简单而纯粹地说,我认为唯一的优势是可移植性。您可以将模板引擎中的模板或视图重新使用到其他后端应用程序中。假设您将应用程序从PHP移动到Java,则不需要重构模板


否则,您将增加复杂性、增加其他执行层(更多时间)、维护应用程序的更多需求(您需要了解该模板引擎的人员),等等。PHP本身—它是您将获得的最好、功能更强大的模板引擎,可能是最快的,您还可以进行缓存,其优点是从后端应用程序而不是从视图控制缓存。

让我们把与此主题相关的比喻分开:

1.将逻辑排除在演示文稿之外-不要将“代码”放入HTML中

任何人说了这句话,然后告诉你使用模板是自相矛盾的:

  • PHP是一种解释语言,它是b语言
    <title>{{@title}}</title>
    Vs
    <title><?= $title ?></title>