图灵完备的模板引擎

5 投票
4 回答
692 浏览
提问于 2025-04-16 19:35

有哪些模板引擎或模板语言是图灵完备的?我听说过以下这些:

  • FreeMarker(用Java实现)
  • MovableTypes模板语言(用Perl实现)
  • xslt :-(
  • Cheetah(用Python实现)
  • Smarty(用PHP实现)

还有其他的吗(特别是用Perl实现的)?

附注:别浪费时间跟我解释MVC,为什么图灵完备的模板不好,以及为什么这个比较点没什么用 :)

4 个回答

0

几乎任何可以让程序代码计算出模板结果的东西。

3

eRuby 让你可以在模板中嵌入任意的 Ruby 代码:

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

Perl的Template::Toolkit可以让你在模板中直接写Perl代码,只要你把EVAL_PERL这个选项打开。在模板里,有两种代码块可以用来写Perl代码:PERL和RAWPERL。使用RAWPERL的时候,你可以看到代码的内部结构,而这些代码会通过eval()这个函数来执行(就是把代码当成字符串来运行)。这样,你就可以完全使用Perl解释器的功能了。

Perl本身被认为是有图灵完备的语法,这意味着它可以执行任何计算。所以,既然Template::Toolkit可以访问Perl,那么这个模板系统也继承了这个特性。

不过,把EVAL_PERL设置为允许在模板中写Perl代码被认为是一个高级功能,可能很少有人会用到,但对于那些勇敢(或者说有点疯狂)的人来说,这个功能是可以使用的。

撰写回答