EJS模板引擎

EJS 是一个开源的 JavaScript 模板引擎库。EJS 全称通常理解为 Embedded JavaScript templates,意思是"嵌入式 JavaScript 模板"。它允许你在文本、HTML、Markdown 等模板文件里写 JavaScript 表达式或逻辑,然后把变量渲染成最终内容。

例如根据环境配置把 SKILL.md 这类 Markdown 模板渲染成最终文档。

EJS 的核心用法:

  1. 准备一个模板字符串或模板文件
  2. 准备一份数据对象
  3. ejs.render()ejs.renderFile() 渲染

下面给你一个最简单 demo。


1. 安装 EJS

bash 复制代码
npm install ejs

2. 最简单的字符串模板 demo

新建 demo.js

js 复制代码
const ejs = require('ejs');

const template = `
<h1>Hello, <%= name %></h1>
<ul>
<% users.forEach(user => { %>
  <li><%= user %></li>
<% }) %>
</ul>
`;

const data = {
  name: 'DataBI',
  users: ['张三', '李四', '王五'],
};

const html = ejs.render(template, data);

console.log(html);

运行:

bash 复制代码
node demo.js

输出类似:

html 复制代码
<h1>Hello, DataBI</h1>
<ul>
  <li>张三</li>
  <li>李四</li>
  <li>王五</li>
</ul>

3. 使用模板文件

新建 template.ejs

ejs 复制代码
<h1><%= title %></h1>

<% if (showList) { %>
<ul>
  <% items.forEach(item => { %>
    <li><%= item.name %>:<%= item.value %></li>
  <% }) %>
</ul>
<% } else { %>
<p>暂无数据</p>
<% } %>

新建 render.js

js 复制代码
const path = require('path');
const ejs = require('ejs');

const data = {
  title: '销售数据',
  showList: true,
  items: [
    { name: '订单数', value: 1200 },
    { name: '销售额', value: '¥89,000' },
    { name: '转化率', value: '12.5%' },
  ],
};

ejs.renderFile(path.join(__dirname, 'template.ejs'), data, (err, result) => {
  if (err) {
    console.error('渲染失败:', err);
    return;
  }

  console.log(result);
});

运行:

bash 复制代码
node render.js

输出:

html 复制代码
<h1>销售数据</h1>
<ul>
    <li>订单数:1200</li>
    <li>销售额:¥89,000</li>
    <li>转化率:12.5%</li>
</ul>

简单记忆:

语法 作用 输入数据 模板示例 输出结果
<%= value %> 输出变量,并自动转义 HTML { name: '张三' }{ name: '<b>张三</b>' } 你好,<%= name %> 你好,张三你好,&lt;b&gt;张三&lt;/b&gt;
<%- html %> 原样输出,不转义 HTML { name: '<b>张三</b>' } 你好,<%- name %> 你好,<b>张三</b>
<% code %> 执行 JS,不输出代码本身 { isVip: true } <% if (isVip) { %>VIP用户<% } %> VIP用户
<%# comment %> EJS 注释,不输出 {} 开始<%# 这里是注释 %>结束 开始结束
<%_ code _%> 执行 JS,并尽量去掉前后空白 { users: ['张三', '李四'] } <%_ users.forEach(u => { _%><%= u %> <%_ }) _%> 张三 李四
相关推荐
shawxlee5 天前
vue3在public下封装config.js自定义配置动态数据,可在打包后直接修改,方便后端部署及后续维护
前端·javascript·经验分享·vue·团队开发·js·项目优化
陆康永6 天前
JavaScript 数组填充:Array.from 与 Array.fill 用法详解及核心区别
js·array
熊猫钓鱼>_>8 天前
ArkTS 方舟编程语言 · 原创快速入门教程
运维·架构·ts·harmonyos·arkts·鸿蒙·js
sugar__salt10 天前
Document 切割:RAG 知识库数据预处理实战
javascript·langchain·embedding·js·rag·cheerio
rockey62711 天前
基于AScript的JavaScript脚本语言发布啦
javascript·c#·.net·js·script
天若有情67314 天前
前端性能优化:从“按下预加载”到“AI级智能预判系统”
前端·性能优化·js·active·hover·首屏加载
H Journey15 天前
web开发学习:html、css、js
前端·css·html·js
Java小学生丶19 天前
分享一个 JS 鼠标跟随贪吃蛇背景库
js·美化
保持当下1 个月前
分享一些程序员很棘手但是却又简单的工具
程序员·免费·js·工具