捕获一个液体变量然后赋值给nil做什么?



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,有效地将其丢弃。这是做什么的呢?

因为您想要渲染的副作用,但不想要渲染的输出。如果没有捕获,则输出呈现的内容。但是实际上你并不想要输出,所以当你完成的时候就把它扔掉。这是一个小hack。

因此,如果您想在不输出结果的情况下进行计算,那么在变量中捕获是一种合理的做法。"then assign to nil"的hack是在说我们对渲染计算的副作用感兴趣,而不是输出。即使该变量被抛出,其他assign元素的影响也会持续存在。

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

相关内容

  • 没有找到相关文章

最新更新