2个版本
0.1.2 | 2023年11月18日 |
---|---|
0.1.0 | 2018年11月18日 |
#143 在 模板引擎 中
用于 weft-erased
13KB
185 行
Weft: 可组合的HTML模板
为什么还需要另一种模板语言?
Weft受到Genshi模板语言的影响。在开源软件中,糟糕的命名双关语传统中,由于Genshi意味着线程,所以我们将其称为Weft,这是编织中使用的基线。
我们还有一些其他的主要目标。
可组合模板
组合模板片段应该像在Rust中组合数据结构一样简单。例如,许多语言使用Jinja 2风格的模板继承,但是这并不真的与Rust处理组合的方式相符,并且通常意味着验证这些模板的唯一方法是通过渲染整个页面。
面向语言 的设计
HTML模板通常涉及在不同的上下文中组合不同的语言,例如HTML标记本身、URL参数、脚本等。许多引擎依赖于知道在哪种上下文中应用哪种转义,以避免内容注入攻击。虽然我们不可能一次解决所有这些问题,但我们至少旨在确保从端到端尽可能正确地形成输出标记。
基于属性的
许多标记语言涉及在标记语言之上添加一个临时的标记层,以控制内容和内容的渲染方式。XSLT在很大程度上通过将内容转换定义为基本标记语言(XML)本身来避免这个问题,但它的通用性比我们需要的模板语言要高得多,因此可能会非常冗长。
使用属性来控制标记渲染方式的想法来源于Zope的模板属性语言(通过Genshi)。这似乎工作得很好,因为它非常不显眼,意味着模板在浏览器中查看时能够自然渲染。
文章寻找Pythonic,基于XML的模板语言也非常好地解释了这些想法。
依赖关系
~7–14MB
~164K SLoC