EJS 模板速查表

把 EJS 模板最常用语法按功能分组整理,Node.js 服务端渲染时直接查表。

编程语言·共 28 条命令·最后更新 2026-07-19
返回 编程语言

基础语法 5

<% code %>
执行 JavaScript 代码(不输出)
<%= value %>
输出变量(HTML 转义)
<%- value %>
输出变量(不转义,原始 HTML)
<%# comment %>
注释(不输出到模板)
<%_ code %>
执行代码并移除前后空白

条件语句 3

<% if (condition) { %>...<% } %>
if 条件判断
<% if (condition) { %>...<% } else { %>...<% } %>
if-else 条件判断
<% if (a) { %>...<% } else if (b) { %>...<% } else { %>...<% } %>
多条件判断

循环语句 4

<% for (let i = 0; i < items.length; i++) { %>...<% } %>
for 循环
<% items.forEach(item => { %>...<% }) %>
forEach 循环
<% for (const item of items) { %>...<% } %>
for...of 循环
<% for (const key in obj) { %>...<% } %>
for...in 循环

包含模板 4

<%- include("header") %>
包含 header.ejs 文件
<%- include("footer") %>
包含 footer.ejs 文件
<%- include("sidebar", { user }) %>
包含并传递参数
<%- include("partials/nav") %>
包含子目录中的模板

布局与继承 3

<%- body %>
在布局中渲染子模板内容
<% layout("layout") -%>
指定布局文件(需 express-ejs-layouts)
<%- include("header", {title: "Home"}) %>
传递参数到包含的模板

常用技巧 5

<%= user?.name || "Guest" %>
可选链和默认值
<%= JSON.stringify(data) %>
输出 JSON 字符串
<%= new Date().toLocaleDateString() %>
格式化日期
<%= items.join(", ") %>
数组转字符串
<%= Math.round(price * 100) / 100 %>
保留两位小数

Express 集成 4

app.set("view engine", "ejs")
设置 EJS 为模板引擎
res.render("index", { title: "Home" })
渲染模板并传递数据
app.set("views", "./views")
设置模板目录
res.render("users/list", { users })
渲染子目录模板

💡 提示

  • <%= %> 会自动转义 HTML,防止 XSS 攻击,<%- %> 不转义,用于输出原始 HTML。
  • include 是同步加载,会将被包含的模板内容插入到当前位置。
  • EJS 支持完整的 JavaScript 语法,可以在 <% %> 中写任何 JS 代码。
  • 布局继承需要 express-ejs-layouts 中间件,或者手动 include header/footer。
  • 缓存模板可以提高性能:app.set("view cache", true)。
  • 开发时关闭缓存:app.set("view cache", false),修改模板后立即生效。