matthecat/twig-whitespace-collapse-extension

该包已被废弃且不再维护。未建议替代包。

Twig 空白折叠扩展

v2.0.0 2017-01-06 09:49 UTC

This package is not auto-updated.

Last update: 2020-10-12 09:00:53 UTC


README

此扩展在编译前融合Twig文本节点的空格、制表符和换行符,从而在保持代码可读性的同时减少生成内容的重量,且不影响执行时间。

例如以下代码

{# base.html.twig #}

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>test</title>
        <link
            rel="stylesheet"
            href="style.css"
        />
    </head>
    <body>
    </body>
</html>

将渲染为

<!DOCTYPE html>
<html> <head> <meta charset="utf-8" /> <title>test</title> <link rel="stylesheet" href="style.css" /> </head> <body> </body>
</html>

激活

该扩展可以像任何其他扩展一样添加到Twig中。

<?php

$twig->addExtension(new \MatTheCat\Twig\Extension\WhitespaceCollapser());

或者如果您使用的是Symfony等

twig.extension.whitespace_collapser:
    class: MatTheCat\Twig\Extension\WhitespaceCollapser
    tags:
        - { name: twig.extension }

配置

扩展的行为取决于其构造函数中传入的参数。默认值为 ['html', 'xml', 'svg'],这意味着对于文件扩展名为 htmlhtml.twigxmlxml.twigsvgsvg.twig 的模板,扩展被激活。

因此,您可以传入一个扩展名数组,或者一个布尔值,这将激活或禁用所有模板的扩展,或者禁用扩展。

标签

扩展还定义了 whitespacecollapse 标签,它通过布尔值参数可以激活或禁用模板中的扩展。

例如

<!DOCTYPE html>
<html>
    <head>
        {% whitespacecollapse false %}
            <meta charset="utf-8" />
            <title>test</title>
            <link
                rel="stylesheet"
                href="style.css"
            />
        {% endwhitespacecollapse %}
    </head>
    <body>
    </body>
</html>

将渲染为

<!DOCTYPE html>
<html> <head>             <meta charset="utf-8" />
            <title>test</title>
            <link
                rel="stylesheet"
                href="style.css"
            />
         </head> <body> </body>
</html>

⚠️ 注意

扩展会融合所有超过一个空格的连续序列,这在一般情况下是可行的,但在以下情况下可能会造成破坏

  • 具有 white-space 属性值为 prepre-wrappre-line 的元素
  • 表单元素的文本
  • data-* 属性

除了 {% whitespacecollapse false %},您还可以使用Twig渲染相关代码以避免此问题。例如

data-example="{{ 'i  like  spaces' }}"