使用模板引擎有什么好处

时间:2013-07-22 00:47:25

标签: phalcon volt

我不明白为什么开发人员会使用Phalcon的Volt模板引擎。

最后,在编译之后,会生成相同的PHP文件,我必须首先手动编写。对我来说,它看起来只会对性能产生不利影响。

答案是“所以你可以将.volt文件传递给前端人员”吗?

4 个答案:

答案 0 :(得分:22)

答案在于开发您的应用程序。为什么使用框架而不是纯PHP?当程序/直接PHP更快时,为什么还要使用面向对象编程呢?

当然有很多原因,这是一个长期的讨论。摘要是易用性和可维护性。

Volt也是如此。如果创建普通的phtml文件(那里带有PHP标签的HTML),你可以使用伏特模板做更长的时间。我可以给你的例子是模板继承,部分,模板内的计算(for / each循环)等。

就性能而言,使用模板引擎时总会有性能损失。幸运的是,Volt是Phalcon的一部分,因此Phalcon在内存中完成了所有艰苦的工作,而不是在这里和那里使用包含的文件来提供其功能,因此性能最低。

决定取决于你。 Volt,Smarty,Twig和其他人可以帮助您开发应用程序。您的决定是否使您使用模板引擎。

答案 1 :(得分:4)

这是一个老问题,但我想添加一些见解。

你问为什么你应该使用Phalcon模板引擎Volt,但在你的解释中,你想知道为什么你应该使用模板引擎。对您的问题的简短回答是:必须使用模板引擎以避免将PHP与HTML混合。

但我也想回答主要问题。为什么Volt?与其他所有模板引擎相比,Volt重载最小,并且不是因为它是用C语言编写的,而是因为它为您的视图生成了一个唯一的PHP文件。

Twig可能是那里最完整的模板引擎。与Volt相比,Twig具有更多功能,它更稳定,更老。无论如何,Twig并没有生成一个独特的PHP文件,而是一堆PHP类,其中的方法可以相互调用。如果你使用Twig C扩展无关紧要,无论如何Twig会很慢。

与Volt相比,Twig真的很慢,甚至还有好老的Smarty。因此,如果您使用Phalcon可能是因为您希望获得最佳性能,提供大量页面请求;在这种情况下,Volt是你的朋友。

答案 2 :(得分:2)

当PHP的历史开始时,它是标准的,HTML是直接在PHP脚本中生成的。但是当它发展成为最受欢迎的网络编程语言之一时,它就会产生一些问题。

让人们在大型项目中工作,以适应他们的任务,即。在开发Web服务时,发明了MVC架构模式。 模型 M 用于存储数据并以可维护和可重复的方式处理它们。 查看 V 作为一部分,负责生成正确的输出。 控制器 C ,负责向模型等发送命令,是应用程序的核心逻辑。

当用户向服务发送命令时,Controller正在处理它并理解。只要到达View Controller,就会触发正确模型的更改,并可能将操作转发给其他控制器。视图控制器采用适当的视图,将生成的数据注入其中并执行它以创建发送回用户的输出。如果尚未生成视图模板,则会触发模板引擎来执行此操作。

正确实现完整的MVC极大地帮助了程序员,系统架构师,前端开发人员等。但是当一方面很难维护数据库(因此开发了ORM),在系统的另一端很难维护视图。

MVC的一个原则是Logic(带有巨大的" L")仅在控制器中。所以观点中没有逻辑。使用模板引擎强制实现这一目标的容易性,因为他们自己对逻辑的支持很差。这不是秘密,程序员是懒惰的" - 所以如果他们有机会将更高级的逻辑放入视图中,他们就会这样做。

我猜所有前端开发人员都有编程技巧。问题是让他们留在你身边。使用混合了PHP的大量视图(以及其他hudge模板)处理大型项目会让他们发疯。读取为模板引擎编写的代码要容易得多。

模板引擎的想法是向系统添加一个部分,它提供了可能的简单语言,允许使用基本逻辑,如循环和 if 语句。一方面,模板引擎接收一种文本文件,将其转换为PHP文件,并将其混合到所有重要HTML的超剂量中。

如果您是独立开发人员,那么您使用混合PHP和HTML的文件对任何人都很重要。看起来可能接近这个:

<html>
<head>
    <title><?=$title?></title>
    <? foreach($metas as $meta) { ?>
    <meta name="<?=$meta['name']?>" content="<?=$meta['content']?>"/>
    <? } ?>

但是任何前端开发人员都希望以这种方式处理文件:

<html>
<head>
    <title>{{ title }}</title>
    {% for meta in metas %}
        <meta name="{{ meta.name }}" content="{{ meta.content }}" />
    {% endfor %}

因为它具有更高的可读性。当模板包含某种内联的javascript时,它发生得非常方便。 毕竟,您最终会得到可以手动创建的相同文件,但是这个文件是为您生成并存储的,所以不再生成,因为核心文件没有更改。我们正在部署期间生成我们的模板,这些模板在性能上达到了0,特别是现在,当Volt引擎用C语言编写时。

模板引擎的另一个方便之处在于(通过一些努力)可以生成动态缩小的模板。除非计划自杀,否则你不会缩小手工制作的模板。

全球范围内,情况如下:

  

所以你可以将.volt文件传递给前端人员

但它是在MVC模式下工作的效果。而Phalcon则是为了实现MVC原则。我甚至都没想到,你是如何使用这个软件工作大约2。5年没有使用模板引擎的。也许你一个人在工作。

答案 3 :(得分:0)

每个人都有不同的品味,但我告诉你我的愿景。

我认为伏特是有用的,因为:

我喜欢phalcon分层渲染,因为它干净,简单,任何人都可以理解哪里可以找到某些东西的视图,非常适合设计师或其他非技术人员

为了增加价值,我修改了一些phalcon部分,以便使用app模块应用分层渲染,这就是我所需要的。