跳到主要内容
版本:3.x.x

模板语法

如果你曾经用过 EJS,就会对 Eta 的语法感到很熟悉。掌握起来很快!

基本语法

你所传入的数据可以通过 it 变量来访问。

输出数据时 使用 <%= 标签作为起始标签。

Hi <%= it.name %>

默认情况下,Eta 会对输出的数据进行 XML 转义。 如果要输出原始 HTML,请使用 <%~ 起始标签。

Hi <%~ it.contentContainingHTML %>

JavaScript 代码求值时,使用 <% 起始标签。

<% let myVar = 3 %>

注释 与通常 JavaScript 中的多行注释语法一样!

<% /* 这是一个注释 */ %>

部件模板(Partials)和布局模板(Layouts)

部件模板(Partials)与普通模板一样,只不过它们是在其它模板中渲染的。

渲染一个部件模板(partial)时 使用 <%~ 起始标签 + include() 函数。

<%~ include("./path-to-partial") %>
<% /* 我们还可以传入数据,这些数据将于 `it` 变量合并并传递个部件(partial) */ %>
<%~ include("./path-to-partial", { option: true }) %>

渲染一个异步的部件模板(async partial)时 使用 <%~ 起始标签 + includeAsync() 函数。

<%~ await includeAsync("./path-to-partial") %>

一个模板文件只能拥有一个父布局模板(parent layout)(不过,布局模板也可以拥有自己的父布局模板)。设置父布局模板(parent layout)时 使用 layout() 函数。

<% layout("./path-to-layout") %>

要在布局模板(layout)中渲染子节点的内容时,请使用 it.body 变量。

<%~ it.body %>

部件模板(Partials)和布局模板(Layouts)的名称解析

如果你在 Node.js 或 Deno 环境中运行 Eta 的话,Eta 会自动尝试从文件系统内部解析部件模板(Partials)和布局模板(Layouts)。例如,<%~ include("/header.eta") %> 指令会在项目的 views 目录下查找名为 header.eta 的文件。

但是,如果你想包含一个不存在于文件系统中的部件模板(Partials)或布局模板(Layouts)该怎么办呢?也许你是在程序中将其定义为字符串,或者从网上加载的。这里是有解决办法的。如果你为模板命名时以 @ 符号开头的话,Eta 就会知道要在内部的模板存储中查找模板,而不是在文件系统中。

<%~ include("@header") %>

控制空白符

注意: "分隔符(delimiter)" 指的是起始或结尾的标记。

起始分隔符后和结尾分隔符前可以添加对应的 -_ 符号。

标签前面的 _ 符号会删除其前面的所有空白符,标签后面的 _ 符号会删除其后面的所有空白符。

标签前面的 - 符号会删除该符号前面的一个换行符,标签后面的 - 符号会删除该符号后面的一个换行符。

Hi
<%- = it.myname %>
<% /* %"Hi" 后面的换行符将被删除 */ %>