自学内容网 自学内容网

Node.js --- 模板引擎EJS

1. 前言

模板引擎是一种工具或库,用于在开发中生成动态内容的 HTML 页面。它通过将预定义的模板与数据结合,生成最终的输出(如 HTML 页面、字符串等)。模板引擎广泛应用于前端和后端开发,尤其是在构建动态网站时。

2. EJS模板引擎

EJS (Embedded JavaScript Templates) 是一种模板引擎,可以帮助我们在 HTML 页面中嵌入 JavaScript 代码,用于动态渲染内容。EJS 语法简洁且与 HTML 高度相似,是 Express.js 等服务器端框架的常用选择。

在项目中安装EJS

npm install ejs

模板引擎是分离用户界面和业务数据的一种技术

在Express中配置EJS为模板引擎

const express = require("express");
const app = express();

// 设置模板引擎为 EJS
app.set("view engine", "ejs");

// 设置模板文件目录(默认是 ./views)
app.set("views", "./views"); //模板引擎文件都存储在该文件夹中

// 配置静态文件目录
app.use(express.static("public"));

app.listen(3000, () => console.log("Server running at http://localhost:3000"));

3. express中使用ejs

模板引擎是一种工具,用于将数据与 HTML 模板结合,从而动态生成网页内容。模板引擎的主要功能是通过嵌入动态数据(如从数据库中获取的数据)生成静态的 HTML 页面。

npm install ejs

设置模板引擎

使用 app.set('view engine', 'ejs') 告诉 Express 使用 EJS 作为模板引擎。

app.set('view engine','ejs')

在node.js中也不仅仅只有ejs模板引擎,例如pug,twing等模板引擎

设置视图文件路径

Express默认会从views文件夹查找视图模板文件

app.set('views',path.resolve(...))

 也可以指定一个自定义的文件夹路径来存放视图文件,而不是使用默认的 views 文件夹。

渲染路由

创建路由设置render响应,render()传入参数模板的文件路径,会在views文件夹中查找,以及对应数据,数据以键值对的形式传递

app.get('/home',(req,res)=>{
    let title = 'hahahahahaha'
    //res.render('模板的文件路径','数据')
    res.render('home',{title})
})
{ username: "Alice" }

示例:渲染模板

const express = require('express');
const path = require('path');
const app = express();

// 设置视图文件夹路径和模板引擎
app.set('views', path.resolve(__dirname, 'views'));
app.set('view engine', 'ejs');

// 渲染视图,并传递数据
app.get('/', (req, res) => {
  const data = { title: 'Hello EJS', message: 'Welcome to EJS!' };
  res.render('index', data);  // 将 data 对象传递给 'index.ejs'
});

// 启动服务器
app.listen(3000, () => {
  console.log('Server is running on http://localhost:3000');
});

4. EJS模板语法

EJS 提供了许多功能来动态地生成 HTML 内容。以下是常用的 EJS 语法。

(1) 插值

EJS 允许在 HTML 中插入 JavaScript 变量。通过 <%= %> 标签可以把变量插入到页面中。

可以理解为在<%= %>标签中书写JS语句

const data = { title: 'Hello EJS', message: 'Welcome to EJS!' };
<h1><%= title %></h1>  <!-- 输出 title 的值 -->
<p><%= message %></p>  <!-- 输出 message 的值 -->

最终渲染的结果是:

<h1>Hello EJS</h1>
<p>Welcome to EJS!</p>

基于独立的HTML数据渲染:

<h1>Welcome, <%= username %>!</h1>
app.get("/", (req, res) => {
    res.render("index", { username: "Alice" });
});

通过键值对的形式传递变量 

示例:

const ejs = require("ejs");

console.log("EJS 模块加载成功");

let china = '国家';
console.log("变量定义成功");

let result = ejs.render('我爱你 <%= country %>', { country: china });
console.log("模板渲染成功");

console.log(result);

ejs.render对字符串模板进行渲染

模板 '我爱你 <%= country%>' 中的 <%= country %> 是 EJS 的插值语法,用于插入数据

{ country: china } 是传入的数据对象,键 country 的值为 '中国'

模板引擎会用传入对象中的 china 值替换模板中的 <%= country %>

​​ 

(2) 输出未经转义的 HTML

如果想要在页面中输出,不经过转义的HTML,(例如,插入一些 HTML 标签

<h2>Welcome</h2>

可以使用 <%- %> 语法 

<%- htmlContent %>  <!-- 输出 htmlContent 中的内容,不进行转义 -->

(3) 插入语法

<%%>中可插入js语法而不影响原有标签形式

如果users数组如下:

const users = [{ name: 'Alice' }, { name: 'Bob' }];
<ul>
  <% users.forEach(function(user) { %>
    <li><%= user.name %></li>
  <% }) %>
</ul>

<%%>中插入js语法,意为遍历fruits数组,  针对遍历后的每一个数据,插入至标签<li>中

5. Express-generator 快速构建Express项目

Express-generator是一个方便的工具,用于快速生成基于 Express 框架的项目骨架结构。它通过命令行生成一个初始项目,包含基本的目录结构、模板文件和配置文件,开发者可以在此基础上快速开始开发。

npm install -g express-generator

 

生成项目

使用express命令生成一个项目,并指定使用EJS作为模板引擎:

express my-app --view=ejs
  • my-app 是项目名称,你可以更改为你喜欢的名字。
  • --view=ejs 表示选择 EJS 作为模板引擎

安装依赖

cd my-app
npm install

所生成的结构目录如下所示:

my-app/
├── app.js               // 应用入口文件
├── bin/
│   └── www              // 启动脚本
├── public/              // 静态文件目录 (CSS, JS, 图片等)
│   ├── images/
│   ├── javascripts/
│   └── stylesheets/
├── routes/              // 路由文件
│   ├── index.js         // 默认路由
│   └── users.js         // 用户相关路由
├── views/               // EJS 模板文件目录
│   ├── error.ejs        // 错误页面模板
│   └── index.ejs        // 首页模板
├── package.json         // 项目依赖和配置信息
└── README.md            // 项目说明文件

运行项目

启动开发服务器:

npm start


原文地址:https://blog.csdn.net/qq_51222843/article/details/145131927

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!