捕获液体变量然后分配给nil做什么?

时间:2013-05-11 17:35:10

标签: jekyll liquid jekyll-bootstrap

Jekyll bootstrap包含文件_includes/JB/setup

{% capture jbcache %}
  <!--
  - Dynamically set liquid variables for working with URLs/paths
  -->
  {% if site.JB.setup.provider == "custom" %}
    {% include custom/setup %}
  {% else %}
    {% if site.safe and site.JB.BASE_PATH and site.JB.BASE_PATH != '' %}
      {% assign BASE_PATH = site.JB.BASE_PATH %}
      {% assign HOME_PATH = site.JB.BASE_PATH %}
    {% else %}
      {% assign BASE_PATH = nil %}
      {% assign HOME_PATH = "/" %}
    {% endif %}

    {% if site.JB.ASSET_PATH %}
      {% assign ASSET_PATH = site.JB.ASSET_PATH %}
    {% else %}
      {% capture ASSET_PATH %}{{ BASE_PATH }}/assets/themes/{{ page.theme.name }}{% endcapture %}
    {% endif %}  
  {% endif %}
{% endcapture %}{% assign jbcache = nil %}

我知道这1)将文本捕获为变量然后2)立即将其分配为nil,有效地将其丢弃。这是做什么的?

1 个答案:

答案 0 :(得分:3)

因为你想要渲染的副作用但不想要渲染的输出。如果捕获,则输出呈现的内容。但是你实际上并不想要输出,所以当你完成时就把它扔掉。这是一个轻微的黑客攻击。

因此,如果您想在不输出结果的情况下进行计算,那么捕获变量是一件合理的事情。 “然后分配给零”黑客是一种说法,我们感兴趣的是渲染计算的副作用,而不是输出。其他assign持续存在的效果即使在变量被抛出时也会持续存在。

同样会丢弃{%include custom/setup %}的输出,但其副作用可能很重要。