dnl/twig-whitespace-collapse-extension

v3.0.0 2017-08-01 09:55 UTC

This package is not auto-updated.

Last update: 2024-09-23 07:38:06 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' }}"