xm

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。开始使用 200 美元的免费积分!

这个 是来自 Giuseppe Gurgone 的一个简洁的小型 HTML 预处理器。它的功能很少,但其中之一是 HTML 包含,这让我一直感到困惑,因为 HTML 本身并不原生支持它。有很多方法可以处理它。我认为很奇怪,它一直被需要几十年,而 HTML 可以发展到支持它,但却没有。所以无论如何,这里又提供了一个处理它的选项。

https://twitter.com/giuseppegurgone/status/1305851405660549122

更巧妙的是,它不仅仅是包含,而是在一种非常干净的方式下使用包含进行模板化。如果这 是 Nunjucks,它们通过创建类似template.njk 的文件来解决这个问题。

{% block header %}
  This is the default (overridable) header.
{% endblock %}
<footer>
  {% block footer %}
    This is the default (overridable) footer.
  {% endblock %}
</footer>

然后你的实际页面使用该模板,例如…

{% extends "parent.html" %}
{% block footer %}
  Special footer for this page.
{% endblock %}

在 xm 中,语法保持 HTML 风格,这很好。所以这个template.html

<slot name="header"></slot>
<footer>
  <slot name="footer"></slot>
</footer>

…在这样的页面上使用

<import src="template.html">
  <fill name="header">Custom Header</fill>
  <fill name="footer">
    <p>Custom footer</p>
  </fill>
</import>

非常干净。此外,您可以随意在任何地方添加一个<markdown>标签并在其中使用 Markdown,这一点非常方便。