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 %}
的输出将同样被丢弃,但其副作用可能很重要。