带继承的Perl模板

nov*_*cik 5 perl inheritance templates

在Perl世界中存在任何具有模板继承的模板系统?

只需检查维基百科比较 _of_web_template_engines (真正不完整的列表) - 这里没有列出任何.

继承=支持从父模板继承布局的能力,分别覆盖父模板内容的任意部分.

意思是像python的Jinja2:

#body.html
<body>
   {% block content %}
   <!-- the content go here -->
   {% endblock %}
</body>

#hi.html
{% extends "body.html" %}
{% block content %}
<h1>Hi!</h1>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

渲染hi.html给出

 <body>
 <h1>Hi!</h1>
 </body>
Run Code Online (Sandbox Code Playgroud)

不要寻找精确的Jinja2语法,只需从perl世界中寻找支持继承的任何模板引擎.(不仅仅是普通包括 - 像Template :: Toolkit)

在这里问,因为搜索CPAN对于像"模板继承"这样的词来说是一种痛苦 - 显示了与这个问题无关的数千个模块.

Ps:...它不应该像嵌入式perl - 应该是"用户可编辑",允许用户构建自己的模板而不会损害整个系统 - 因此不能使用Mason或HTML :: Mason)

Dav*_*man 3

我会附议Text::Xslate的建议。它的语法甚至与 Jinja2 示例非常相似:

layouts/main.tx

...
<div id="page">
  : block sidebar -> { }
  <div id="content">
    : block header-> { <h1>Default Title</h1> }
    : block content -> { }
  </div>
</div>
...
Run Code Online (Sandbox Code Playgroud)

在另一个模板中:

: cascade layouts::main
: override header -> {
<div id="header">
...
</div>
: }

: override content -> {
<div id="content-body">
...
</div>
: }
Run Code Online (Sandbox Code Playgroud)