10

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

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

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

4

4 回答 4

22

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

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

伏特也是如此。如果创建普通的 phtml 文件(其中带有 PHP 标记的 HTML),您可以使用 volt 模板来执行将花费您更长的时间的事情。我可以给你的例子是模板继承、部分、模板内的计算(for/each 循环)等。

就性能而言,使用模板引擎时总是会影响性能。幸运的是,Volt 是 Phalcon 的一部分,因此对性能的影响很小,因为 Phalcon 在内存中完成了所有艰苦的工作,而不是到处使用包含的文件来提供其功能。

决定权在你。Volt、Smarty、Twig 等可以帮助您开发应用程序。您的决定决定了您是否使用模板引擎。

于 2013-07-22T05:17:13.327 回答
4

这是一个老问题,但我想补充一些见解。

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

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

Twig 可能是目前最完整的模板引擎。与 Volt 相比,Twig 具有更多功能,它更稳定且更老。无论如何,Twig 不会生成唯一的 PHP 文件,而是生成一堆 PHP 类,其中包含相互调用的方法。不管你是否使用 Twig C 扩展,Twig 都会很慢。

与 Volt 甚至与旧的 Smarty 相比,Twig 真的很慢。所以,如果你使用 Phalcon 可能是因为你想获得最好的性能,服务大量的页面请求;在这种情况下,伏特是你的朋友。

于 2014-07-20T17:13:58.657 回答
2

当 PHP 的历史开始时,它是标准的,HTML 是直接在 PHP 脚本中生成的。但是当它成长为最流行的网络编程语言之一时,它碰巧产生了一些问题。

让从事大型项目的人们对他们的任务感到满意,即。在开发 Web 服务时,MVC 架构模式是在哪里发明的。M for Model用于存储数据并以可维护和可重复的方式处理它们。V代表View as a part,负责生成正确的输出。C代表控制器,负责向模型等发送命令,是应用程序的核心逻辑。

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

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

MVC 的原则之一是逻辑(带有巨大的“L”)仅在控制器中。所以视图中没有逻辑。使用模板引擎可以很容易地实现这一点,因为他们自己对逻辑的支持很差。程序员“懒惰”并不是什么秘密——所以如果他们有机会看到一些更高级的逻辑,他们会这样做。

我想所有的前端开发人员都有编程技能。问题是让他们留在你身边。在包含大量视图(以及大量模板)的大型项目中混入 PHP 会使他们发疯。阅读为模板引擎编写的代码要容易得多。

模板引擎的想法是在系统中再添加一个部分,它提供了可能简单的语言,允许使用循环和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 年的。也许你一个人工作。

于 2016-01-28T10:46:57.083 回答
0

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

我认为伏特很有用,因为:

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

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

于 2017-01-11T12:14:24.447 回答