图灵完备的模板引擎
有哪些模板引擎或模板语言是图灵完备的?我听说过以下这些:
- 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代码被认为是一个高级功能,可能很少有人会用到,但对于那些勇敢(或者说有点疯狂)的人来说,这个功能是可以使用的。