图灵完整的模板引擎

时间:2011-06-15 00:38:18

标签: python ruby perl templates programming-languages

模板引擎/ 模板语言是完整的?到目前为止我听说过这些:

  • FreeMarker(在java中实现)
  • MovableTypes模板语言(在perl中)
  • xslt: - (
  • 猎豹(用Python编写)
  • Smarty(在PHP中)

其他任何人(特别是用perl实现)?

Ps:不要浪费时间向我澄清MVC,以及为什么图腾完整模板不好,以及为什么这不是一个有用的比较点:)

4 个答案:

答案 0 :(得分:3)

eRuby允许您将任意Ruby嵌入到模板中:

$ echo "Hello <%= 'dlrow'.reverse() %> from eRuby" | erb
Hello world from eRuby

答案 1 :(得分:3)

如果设置了EVAL_PERL标志,则Perl的Template::Toolkit允许inlining of Perl。在模板中,PERL和RAWPERL块允许内联(在RAWPERL的情况下)内部暴露内联,内联代码通过eval()(引用的eval)进行评估。这提供了对Perl解释器的完全访问权限。

Perl本身被认为有Turing Complete grammar。因此,鉴于Template :: Toolkit确实提供了对Perl本身的访问,模板系统继承了该特性。

虽然将EVAL_PERL设置为允许在模板中内联Perl被认为是一种高级(并且可能很少使用)功能,但它可用于强心(并且可疑的)。

答案 2 :(得分:0)

几乎任何允许程序代码计算模板结果的东西。

答案 3 :(得分:0)

大多数meta-programming language功能支持任意评估和将代码拼接到正在运行的程序中。因此,大多数支持图灵完成计算作为拼接和替换执行的一部分。

另一方面,简单的字符串插值元编程系统通常受到严格限制(例如,没有递归)。