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,有效地将其丢弃。这是做什么的?
答案 0 :(得分:3)
因为你想要渲染的副作用但不想要渲染的输出。如果不捕获,则输出呈现的内容。但是你实际上并不想要输出,所以当你完成时就把它扔掉。这是一个轻微的黑客攻击。
因此,如果您想在不输出结果的情况下进行计算,那么捕获变量是一件合理的事情。 “然后分配给零”黑客是一种说法,我们感兴趣的是渲染计算的副作用,而不是输出。其他assign
持续存在的效果即使在变量被抛出时也会持续存在。
同样会丢弃{%include custom/setup %}
的输出,但其副作用可能很重要。