EJS Cheatsheet - EJS Template Engine Reference

EJS 模板引擎开发必备语法都在这里了,从标签语法到 Express 集成,按类别分类整理,写代码时直接复制。

Languages·35 commands·Last updated 2026-07-21
Back to Languages

基础语法 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 })
渲染子目录模板

渲染 API 与配置 7

ejs.render(str, data)
渲染模板字符串为 HTML
ejs.renderFile("tpl.ejs", data, (err, html) => {})
异步渲染文件
ejs.compile(str, { client: true })
编译为客户端可用函数
ejs.render(str, data, { cache: true })
开启缓存渲染(生产环境)
ejs.delimiter = "$"
设置自定义分隔符为 $
<%= locals.user %>
访问 locals 传入的变量
const fn = ejs.compile(str); fn(data)
编译后多次复用渲染函数

💡 Tips

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