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

Ejs模版引擎介绍,什么是模版引擎,什么是ejs,ejs基本用法

** EJS 模板引擎**,让你彻底搞明白什么是模板引擎、什么是 EJS、怎么用、语法、最佳实践等等:


📚 一、什么是模板引擎?

模板引擎是前后端分离之前的一种服务器端“渲染技术”。它的主要作用是:

将 HTML 页面和后端传递过来的数据结合起来,生成真正能展示给用户的 HTML 页面。

🛠️ 工作原理:

  1. 编写模板页面(包含 HTML 和变量占位符)
  2. 后端把数据传进去
  3. 模板引擎渲染成真正的 HTML 返回给浏览器

🎯 二、什么是 EJS?

EJS(Embedded JavaScript Templates) 是 Node.js 中使用广泛的模板引擎之一,和 HTML 长得很像,但支持 JavaScript 嵌入。

EJS 特点:

特点描述
JS 语法嵌入可以写原生 JavaScript 表达式和语句
HTML 格式友好看起来就是 HTML,不需要特殊缩进
灵活易学初学者也能很快上手

🚀 三、Express 中使用 EJS(从零开始)

1️⃣ 安装依赖

npm install express ejs

2️⃣ 创建基本目录结构

project/
├── views/         ← EJS 页面模板放这里
│   └── index.ejs
├── app.js         ← 主程序

3️⃣ 配置 Express 使用 EJS(app.js)

const express = require('express');
const app = express();
const port = 3000;// 设置 EJS 为视图引擎
app.set('view engine', 'ejs');// 设置视图文件目录(默认就是 'views',可省略)
app.set('views', './views');// 路由
app.get('/', (req, res) => {res.render('index', {title: '欢迎使用 EJS',username: '小红',skills: ['JavaScript', 'Vue', 'Node.js']});
});app.listen(port, () => {console.log(`服务已启动:http://localhost:${port}`);
});

4️⃣ 创建 EJS 页面 views/index.ejs

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title><%= title %></title>
</head>
<body><h1>你好,<%= username %> 👋</h1><p>你掌握的技能有:</p><ul><% skills.forEach(skill => { %><li><%= skill %></li><% }) %></ul>
</body>
</html>

🧪 四、EJS 语法大全(常用)

写法说明
<%= variable %>输出变量并自动转义(安全)
<%- html %>原样输出 HTML,不转义(慎用)
<% code %>执行 JS 代码(无输出)
<% if (...) { %> ... <% } %>条件判断
<% array.forEach(...) %>循环输出

📝 示例补充

<!-- 输出变量 -->
<p>用户名:<%= username %></p><!-- 条件语句 -->
<% if (username === 'admin') { %><p>欢迎管理员!</p>
<% } else { %><p>普通用户</p>
<% } %><!-- 输出 HTML(注意 XSS) -->
<%- '<strong>这是粗体</strong>' %>

🧩 五、模板复用(Layout)

虽然 EJS 本身不内置布局系统,但你可以用 <%- include('header') %> 来实现“模板片段复用”。

示例:

1. 创建公共头部:views/partials/header.ejs
<header><h1>网站导航</h1><hr/>
</header>
2. 主模板中引入
<!DOCTYPE html>
<html>
<head><title><%= title %></title>
</head>
<body><%- include('partials/header') %><p>主内容区</p></body>
</html>

📦 六、文件结构推荐(实战项目)

project/
├── views/
│   ├── partials/
│   │   └── header.ejs
│   ├── index.ejs
│   └── user.ejs
├── public/               ← 静态资源
│   └── css/style.css
├── routes/
│   └── user.js
├── app.js

💬 七、EJS 与前端分离框架的区别

项目EJS(SSR)Vue/React(SPA)
渲染方式服务端渲染客户端渲染
首屏加载✅ 快❌ 需加载 JS
SEO 支持✅ 好❌ 差(需 SSR)
动态交互性❌ 差(需刷新)✅ 很强
场景适合简单后台、CMS大型复杂前端应用

✅ 八、总结

  • EJS 是轻量、高效、易学的模板引擎。
  • 它适合用在中小型后台项目、管理平台。
  • 不建议用 EJS 做前端复杂交互(如 Vue/React 更合适)。

http://www.xdnf.cn/news/1745.html

相关文章:

  • PCB数字地和模拟地的连接问题
  • 【android bluetooth 协议分析 06】【l2cap详解 7】【l2c_rcv_acl_data函数解析】
  • 被封号如何申诉?Google Play开发者账号申诉模版分享
  • Dify升级-linux环境下使用zip离线安装方式部署升级
  • vue3+TS 手动实现表格滚动
  • C#进阶学习(十二)协变逆变
  • [C#]反射的实战应用,实际数据模拟
  • CDGP|大模型赋能数据治理:实践案例与深度剖析
  • VITS:基于对抗学习的条件变分自编码器
  • Java大师成长计划之第2天:面向对象编程在Java中的应用
  • 【回眸】Aurix TC397 IST 以太网 UDP 相关开发
  • 【python】Python 中,单下划线(_)和双下划线(__)开头以及结尾的命名方式具有特殊的含义和用途
  • 每日算法——快乐数、两数之和
  • 域控重命名导致无法登录
  • 回溯--一种暴力搜索算法
  • write函数
  • RTSP播放器实现回调RGB|YUV给视觉算法,然后二次编码推送到RTMP服务
  • ORACLE DATAGUARD遇到GAP增量恢复方式修复RAC环境备机的实践
  • C语言教程(十五):C 语言函数指针与回调函数详解
  • 【高并发】 MySQL锁优化策略
  • rsync实现内网两台服务器文件同步
  • Winddows11官网下载安装VMware Workstation Pro17(图文详解)
  • Linux命令-perf
  • 企业办公即时通讯软件BeeWorks,私有化安全防泄密
  • 【MobaXterm】---修改 MobaXterm 终端 默认字体和大小 保真
  • 基于 C++ 的用户认证系统开发:从注册登录到Redis 缓存优化
  • 【技术派后端篇】整合WebSocket长连接实现消息实时推送
  • 《Python3网络爬虫开发实战(第二版)》配套案例 spa6
  • 数据结构——栈与队列
  • GPU热设计功耗(TDP)与计算效率的平衡艺术:动态频率调节对算法收敛速度的影响量化分析