【发布时间】:2010-10-11 09:33:47
【问题描述】:
与其花第二天(或一年)的时间阅读它们,还有什么建议我应该更详细地研究一下模板引擎吗?
【问题讨论】:
标签: python templates code-generation
与其花第二天(或一年)的时间阅读它们,还有什么建议我应该更详细地研究一下模板引擎吗?
【问题讨论】:
标签: python templates code-generation
【讨论】:
如果您正在进行代码生成,您可能会发现 Cog 很有用 - 它专门用于代码生成,而不是一种普遍适用的模板语言。
【讨论】:
最重要的问题是您是否可以接受模板所需的语法。第二和第三(取决于您的应用程序需求)将是速度和易于分发。
我查看了所有这些,但我唯一能忍受的语法是Jinja。 Jinja 具有支持大量 Python 结构的优势,因此可以很容易地根据需要在模板中添加 sn-ps 的功能,而无需编写特殊的标签。其他模板系统中需要标签的大部分内容都由 Jinja 中的宏处理。
当然,如果您正在寻找简单快捷的东西,那么在核心语言中很难击败 Python templating API。
【讨论】:
更新:Kid 似乎已被Genshi 继承。
我使用过 Kid,我认为这是较旧的系统之一。我发现它非常坚固、稳定和可靠。它是基于标签的,因此非常适合使用 XML/HTML。有趣的是,模板函数是作为 HTML 属性完成的,而不是特殊块,即 {% ... %}。但是,其中的某些方面(尤其是它“包含”的方式)可能会变得非常令人讨厌。它似乎也没有被积极开发或根本不再开发。
如果您想要一些已经存在了一段时间并且已经变得相当稳定的东西,那么值得一看。如果您想要更新的内容,我听说过有关 Genshi 和 Jinja 的好消息。
【讨论】:
我喜欢Clearsilver,因为它适用于多种不同的语言,并且严格执行数据和表示之间的分离。我以前使用过 Cheetah,虽然它很不错,但我不喜欢使用有时看起来像是有限形式的 Python。
【讨论】:
如果您正在使用 X[HT]ML,可以为您提供格式良好的模板的基于标签的模板系统之一是一个不错的选择。我使用PXTL,FWIW。 (它可以生成其他格式,但如果您的重点不是 XML 或 HTML,那将不是一个明智的选择。)
我非常不喜欢那些声称通过将表达式限制为自己的小语言来“帮助您分离业务逻辑和表示”的模板系统。他们似乎不明白存在诸如“表示逻辑”之类的东西,有时它会变得复杂到需要像 Python 这样的真正语言来运行它。让您将演示逻辑与业务逻辑一起踢到应用程序中是所以不是胜利。避免!
(有限的表达式分离迷你语言方法在 JSP 的“EL”中是有意义的,因为 Java 过于冗长而无法在模板库中使用。但是我们有 Python!它非常适合在模板中编写表达式,因为它是;删除功能并让用户学习另一种新语言对您没有任何好处。)
【讨论】: