如何使用Twig缩小HTML?

时间:2013-09-07 22:28:44

标签: twig minify

我正在使用Twig,我希望能够缩小HTML输出。我该怎么做呢?我尝试了{% spaceless %},但这需要将其添加到我的所有模板中。我可以在Twig引擎中添加缩小功能吗?

3 个答案:

答案 0 :(得分:4)

这可能对你有所帮助。

使用html-compress-twig你可以在一个package.use composer中压缩html,css,js来安装composer require nochso/html-compress-twig,你必须使用这个代码添加带有twig的Extension。

$app->extend('twig_theme', function($twig_theme, $ojt) {
$twig_theme->addExtension(new nochso\HtmlCompressTwig\Extension());
return $ojt_theme;});

最后转到你的模板文件中添加此代码。

{% htmlcompress %} ....your coding... {% endhtmlcompress %}
{{ htmlcompress('<ul> <li>') }}
{{ '<ul> <li>'|htmlcompress }}

答案 1 :(得分:1)

例如,您在src/Controller目录中有BaseController。

  1. 您应该创建BaseController
  2. 从Controller
  3. 扩展它
  4. 覆盖Controller类的render方法
  5. 并在每个控制器中使用此方法
  6. class BaseController extends Controller {
    protected function render($view, array $parameters = array(), Response $response = null)
        {
            if ($this->container->has('templating')) {
                $content = $this->container->get('templating')->render($view, $parameters);
            } elseif ($this->container->has('twig')) {
                $content = $this->container->get('twig')->render($view, $parameters);
            } else {
                throw new \LogicException('You can not use the "render" method if the Templating Component or the Twig Bundle are not available. Try running "composer require symfony/twig-bundle".');
            }
    
            if (null === $response) {
                $response = new Response();
            }
            $content = preg_replace(array('/<!--(.*)-->/Uis',"/[[:blank:]]+/"),array('',' '),str_replace(array("\n","\r","\t"),'',$content));
            $response->setContent($content);
    
            return $response;
        }
    }
    

    您还可以在其他控制器中扩展BaseController。

答案 2 :(得分:-6)

使用

{% spaceless %}
YOUR WHOLE PAGE GOES HERE HTML, TWIG, JS EVERYTHING...
{% endspaceless %}

可能是您的树枝版本无法识别标签,只需更新最新版本的树枝。

这会缩小生成的输出html,并且页面加载会增加,因为它只会加载html的编译版本。

虽然您仍然可以在可读的情况下查看代码。