模板语法
如果你曾经用过 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" 后面的换行符将被删除 */ %>