就像 MVC.NET Pyramid 可以使用任意数量的模板语言一样,几乎所有模板语言都支持类似于母版页的概念。不过,他们都没有这样称呼他们;-)
Chameleon 可能是最远的——用于定义母版页中插槽的工具ContentPlaceholder
等)macros
在 Chameleon 中被调用,并由相当重的首字母缩略词METAL
(宏扩展模板属性语言)引用。
在 Jinja2 和 Mako 中,它们被称为blocks
,Breve 称为它们slots
。
以下是其中每个母版页的外观:
变色龙:
<!-- Caveat Emptor - I have never used Chameleon in anger -->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<!-- We don't *need* all of this in Chameleon, but it's worth
remembering that it adds it for us -->
<head>
<title metal:define-macro="title"><span metal:define-slot="title"></span></title>
</head>
<body metal:define-macro="content">
<div metal:define-slot="content"></div>
</body>
</html>
金贾2:
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}{% endblock %}</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
马可:
<!DOCTYPE html>
<html>
<head>
<title><%block name="title" /></title>
</head>
<body>
<%block name="content" />
</body>
</html>
短:
html [
head [
title [ slot("title") ]
]
body [
slot("content")
]
]