MVC.NET Pyramidが任意の数のテンプレート言語を使用できるように、それらのほとんどすべてがマスターページと同様の概念をサポートしています。それらのどれもそれらをそれとは呼びません;-)
カメレオンはおそらく最も遠い場所です。マスターページContentPlaceholder
などでスロットを定義するために使用するツールは、カメレオンで呼び出さmacros
れ、かなり重い頭字語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>
Jinja2:
<!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")
]
]