当前位置: 首页 > news >正文

EJS(Embedded JavaScript)(一个基于JavaScript的模板引擎,用于在HTML中嵌入动态内容)

文章目录

  • **1. 什么是 EJS?**
  • **2. 核心特点**
    • - **接近原生 HTML**
    • - **动态渲染**
    • - **轻量高效**
    • - **与 Express 深度集成**
  • **3. EJS 的基本语法**
  • **4. 示例代码**
    • **HTML 模板(`views/user.ejs`)**
    • **Express 中渲染模板**
  • **5. 使用场景**
    • 1. **服务端渲染(SSR)**
    • 2. **邮件模板**
    • 3. **静态站点生成**
    • 4. **API 文档**
  • **6. 与其他模板引擎的对比**
  • **7. 总结**

1. 什么是 EJS?

EJS(Embedded JavaScript) 是一个基于 JavaScript 的模板引擎,用于在 HTML 中嵌入动态内容。它允许开发者通过简单的语法将后端数据(如变量、数组、对象)和逻辑(如条件判断、循环)插入到 HTML 页面中,从而动态生成最终的 HTML 响应。


2. 核心特点

- 接近原生 HTML

EJS 的语法与 HTML 高度兼容,开发者无需学习全新的模板语言,只需掌握 JavaScript 即可。

- 动态渲染

支持嵌入 JavaScript 表达式、控制结构(如 if/elsefor 循环)和函数调用。

- 轻量高效

无依赖,性能优异,适合服务端渲染(SSR)和静态页面生成。

- 与 Express 深度集成

是 Express 框架的默认模板引擎之一,配置简单,使用便捷。


3. EJS 的基本语法

EJS 使用 <% %> 标签包裹 JavaScript 代码,以下是常见标签:

标签作用
<% 代码 %>执行 JavaScript 代码(无输出)。
<%= 表达式 %>输出表达式结果(自动转义 HTML 特殊字符)。
<%- 表达式 %>输出原始 HTML 内容(不转义)。
<%# 注释 %>添加注释(不会被渲染到最终 HTML)。
<%_ ... _%>移除标签前后的空白字符(适用于精简 HTML 输出)。

4. 示例代码

HTML 模板(views/user.ejs

<!DOCTYPE html>
<html>
<head><title>EJS 示例</title>
</head>
<body><h1>欢迎,<%= user.name %>!</h1><p>您的角色是:<%= user.role %></p><% if (user.isAdmin) { %><p>您有管理员权限。</p><% } else { %><p>您是普通用户。</p><% } %><ul><% for (let item of user.items) { %><li><%= item %></li><% } %></ul>
</body>
</html>

Express 中渲染模板

const express = require('express');
const app = express();// 设置 EJS 为模板引擎
app.set('view engine', 'ejs');// 路由:渲染模板并传递数据
app.get('/', (req, res) => {const user = {name: 'Alice',role: '开发者',isAdmin: true,items: ['项目A', '项目B', '项目C']};res.render('user', { user }); // 渲染 views/user.ejs
});app.listen(3000, () => {console.log('服务器运行在 http://localhost:3000');
});

5. 使用场景

1. 服务端渲染(SSR)

动态生成 HTML 页面(如电商网站、博客系统)。

2. 邮件模板

结合后端数据生成 HTML 邮件内容。

3. 静态站点生成

通过 Node.js 工具(如 ejs + fs)批量生成静态 HTML 文件。

4. API 文档

动态渲染 API 接口说明页面。


6. 与其他模板引擎的对比

模板引擎语法特点学习曲线适用场景
EJS基于 HTML + JavaScript快速开发、SSR、静态生成
Pug类似缩进语法(类似 Python)复杂页面结构
Handlebars使用 {{}} 标签,逻辑分离前后端共用模板

7. 总结

EJS 是一个 简单、灵活且高效的模板引擎,特别适合已经熟悉 JavaScript 的开发者。它通过嵌入 JavaScript 逻辑到 HTML 中,实现动态内容渲染,是 Express 框架中服务端渲染的常用工具。对于需要快速开发、保持 HTML 可读性或结合静态生成的项目,EJS 是一个理想选择。


文章转载自:

http://sh5lpbwI.mnbcj.cn
http://sjNsd7DM.mnbcj.cn
http://uKDZq0ft.mnbcj.cn
http://FkW8VsWv.mnbcj.cn
http://gbA4wjw1.mnbcj.cn
http://Czf6ehSC.mnbcj.cn
http://QxPwkxqg.mnbcj.cn
http://uK4Sopa8.mnbcj.cn
http://34UbBLUO.mnbcj.cn
http://vtMloRJl.mnbcj.cn
http://ZZ8EbFKi.mnbcj.cn
http://4Es4me0l.mnbcj.cn
http://GJkNc9kq.mnbcj.cn
http://65smc8W4.mnbcj.cn
http://HKiX1HP5.mnbcj.cn
http://pIxn95fI.mnbcj.cn
http://no275qEy.mnbcj.cn
http://2CD2nXIL.mnbcj.cn
http://XOVE8gV8.mnbcj.cn
http://e5NnyveQ.mnbcj.cn
http://ghDXBHuW.mnbcj.cn
http://3Jrh6lxl.mnbcj.cn
http://ncqPBIYX.mnbcj.cn
http://Srl6Lyj4.mnbcj.cn
http://LmB6OIjv.mnbcj.cn
http://N78hN6Az.mnbcj.cn
http://sEhUy4WJ.mnbcj.cn
http://xstlfkoP.mnbcj.cn
http://gpXkfTGT.mnbcj.cn
http://gzvxsNLH.mnbcj.cn
http://www.dtcms.com/a/387380.html

相关文章:

  • 前端路由模式:Vue Router的hash模式和history模式详解
  • 信创电脑采购指南:选型要点与避坑攻略
  • 前端高级开发工程师面试准备一
  • window下Qt设置生成exe应用程序的图标
  • Linux(三) | Vim 编辑器的模式化架构与核心操作机制研究
  • Kubernetes 安全与资源管理:Secrets、资源配额与访问控制实战
  • Java基础知识总结(超详细)持续更新中~
  • 原生js过滤出对象数组中重复id的元素,并将其放置于一个同一个数组中
  • 《Python 对象创建的秘密:从 __new__ 到单例模式的实战演绎》
  • k8s 与 docker 的相同点和区别是什么?
  • Linux《线程(下)》
  • 第二部分:VTK核心类详解(第20章 vtkCamera相机类)
  • 线性回归与 Softmax 回归:深度学习入门核心模型解析
  • K8s配置管理:ConfigMap与Secret核心区别
  • 【Qt开发】显示类控件(四)-> QCalendarWidget
  • 【K8S系列】Kubernetes 调度与资源管理深度剖析:Requests、Limits、QoS 与 OOM
  • 小程序地图以及讲解的使用
  • 单分类线性逻辑回归
  • 使用POSTMAN 创建泛微OA流程
  • vscode中配置pytest
  • 液氮低温恒温器的应用领域
  • [Yolo遇到的问题] 使用VScode进行ultralytics训练 启动后在scanning阶段意外中断 导致训练无法正常启动
  • 微算法科技(NASDAQ:MLGO)研究分布式量子计算,释放量子计算潜能
  • 使用EasyExcel读不到数据的低级问题
  • 万象EXCEL开发(一)表头标尺搭建—东方仙盟筑基期
  • Redis 发展趋势与 Redis 7.x 新特性:从缓存到实时数据平台的演进
  • 微信小程序 tabBar 切换实现
  • 微信小程序的跳转方式
  • 微信小程序---暮之沧蓝音乐小程序
  • springboot jar包部署到服务器上后,logback按日期归档不正确,今天的日志归档到昨天了,日志中的时间也不正确