【发布时间】:2012-08-09 07:35:37
【问题描述】:
我一直在使用Twig(版本1.9.1)作为PHP 模板引擎,我对渲染的HTML 并不完全满意,因为添加了额外的不需要的换行符和空格使结果非常混乱。为了使我的模板更加灵活,我使用了macros,它可以以嵌套方式相互调用,这本身工作正常,但似乎使事情变得更糟。例如,<a> 元素呈现如下:
<a href="http://google.com" alt="some alternative text"> some text with <strong>some html</strong>
</a>
我知道部分原因是我的twig 模板的格式设置方式,就像我删除空行并从中缩进一样,呈现的HTML 看起来更整洁,但并不完全:下面的输出显示了一个渲染的<a>,在元素的开始和结束之间仍然有2个换行符,尽管相应的模板不包含任何空行或空格!:
<a href="http://google.com" alt="some alternative text">some text with <strong>some html</strong>
</a>
尽管有帮助,但从我的 twig 模板中删除格式(即空行和缩进)并不是一个真正的选择,因为它使我的模板很难阅读和维护。
除了从模板中删除格式。使用Twig 呈现更干净/整洁的 HTML 的方法是什么?
【问题讨论】:
-
如果您想绝对控制输出中的空白,只需使用 PHP。 TBH 我一直不明白为什么像 Twig 和 Smarty 这样的 PHP 模板引擎甚至存在,PHP 被设计为本身就是一个 HTML 模板引擎,虽然以这种方式使用它有点冗长与这些抽象层中的任何一个相比,它使您能够更好地控制最终结果发生的事情。 With just one more layer of abstraction, I can take over the world!
-
从前端 POV 我看到了模板引擎的好处:语法更易于人类阅读/直观 + 引擎之间的相似性,即使来自不同的语言(Django:docs.djangoproject.com/en/1.4/topics/templates,Twig:@987654325 @) 这必须有助于处理不同的项目。从后端 POV 来看,我看到了引擎内部例程(例如转义)的好处,这些例程有助于一致且安全地呈现内容。但是在我的情况下,我认为使用纯
PHP会更好,因为我可以自己做一些更简单、更快的事情。 -
@DaveRandom 那时您显然从未从事过 SAAS 风格的项目——您的观点非常狭隘。以托管网站系统为例,我们只说它是一个托管博客。如果托管用户想要编辑设计会发生什么?如果你允许他们使用 PHP,那你就是个白痴,所以 Twig 是一个理想的候选者,尤其是它的沙盒。