Freemaker 高阶用法示例
时间: 2024-05-08 14:17:00 浏览: 51
1. 构建复杂的数据模型
使用Freemaker,可以轻松地构建复杂的数据模型,以便在模板中使用。例如,可以使用Freemaker创建一个包含多个对象的数据模型,每个对象都有多个属性。
```
<#assign users = [
{name: "John", age: 25, email: "john@example.com"},
{name: "Jane", age: 30, email: "jane@example.com"},
{name: "Bob", age: 35, email: "bob@example.com"}
]>
<#assign products = [
{name: "Product A", price: 10.0, description: "Description of Product A"},
{name: "Product B", price: 20.0, description: "Description of Product B"},
{name: "Product C", price: 30.0, description: "Description of Product C"}
]>
<#assign data = {
users: users,
products: products
}>
<#-- 在模板中使用数据模型 -->
<#list data.users as user>
Name: ${user.name}, Age: ${user.age}, Email: ${user.email}
</#list>
```
2. 使用自定义函数和指令
使用Freemaker,可以扩展模板语言,以便使用自定义函数和指令。例如,可以创建一个自定义指令来生成一个随机数。
```
<#-- 定义一个自定义指令 -->
<#function random max=1000>
<#return (Math.random() * max) ? floor>
</#function>
<#-- 在模板中使用自定义指令 -->
Random number: ${random(100)}
```
3. 使用条件语句和循环
使用Freemaker,可以使用条件语句和循环来控制模板的输出。例如,可以在模板中使用if语句来根据条件输出不同的内容。
```
<#if user.age > 18>
Welcome, ${user.name}!
<#else>
Sorry, you are not old enough to use this service.
</#if>
```
4. 使用include指令
使用Freemaker,可以使用include指令将其他模板包含到当前模板中。例如,可以创建一个包含页眉和页脚的模板,并在其他模板中使用include指令将它们包含进去。
```
<#-- header.ftl -->
<html>
<head>
<title>My Website</title>
</head>
<body>
<#-- footer.ftl -->
</body>
</html>
<#-- other.ftl -->
<#include "header.ftl">
<!-- content of the page -->
<#include "footer.ftl">
```
5. 使用宏
使用Freemaker,可以使用宏来封装重复的模板代码。例如,可以创建一个宏来生成一个HTML表格。
```
<#macro table data>
<table>
<thead>
<tr>
<#list data.0?keys as key>
<th>${key}</th>
</#list>
</tr>
</thead>
<tbody>
<#list data as row>
<tr>
<#list row?values as value>
<td>${value}</td>
</#list>
</tr>
</#list>
</tbody>
</table>
</#macro>
<#-- 在模板中使用宏 -->
<#assign data = [
{name: "John", age: 25, email: "john@example.com"},
{name: "Jane", age: 30, email: "jane@example.com"},
{name: "Bob", age: 35, email: "bob@example.com"}
]>
<@table data/>
```
阅读全文