目录
10分钟学习如何使用 Express+Mysql开发图书管理系统
在Express中,我们可以使用EJS(Embedded JavaScript)模板引擎来渲染动态HTML页面。本文将详细介绍Express EJS渲染技术的使用方法和技巧。
1. EJS简介
EJS是一种简单的模板语法,它允许我们在HTML文件中嵌入JavaScript代码,从而实现前后端的数据交互。EJS具有以下特点:
- 简洁易懂:EJS的语法类似于JavaScript,因此对于熟悉JavaScript的开发者来说,学习成本非常低。
- 高效性能:EJS在处理大量数据时表现出色,因为它是基于字符串的模板引擎,而不是基于真正的编程语言。
- 丰富的功能:EJS支持条件判断、循环、自定义函数等高级功能,可以满足各种复杂的渲染需求。
2. 安装与配置
在使用Express EJS之前,我们需要先安装相关依赖。在项目根目录下运行以下命令:
npm install express ejs --save
接下来,我们需要创建一个项目,项目中创建一个views文件夹和入口文件app.js,在app.js中引入Express和EJS模块,并设置模板文件夹:
const express = require('express');
const app = express();
const path = require('path');
const ejs = require('ejs');
// 设置模板文件夹
app.set('views', path.join(__dirname, 'views'));
// 设置模板引擎为EJS
app.set('view engine', 'ejs');
3. 渲染视图
3.1 基本用法
在app.js中,我们去编写一个接口'/', 我们使用res.render()
方法来渲染视图。
app.get('/', (req, res) => {
res.render('index', { title: '你好, 同学!', heading: '欢迎来观看我的文章', items: ['Java', 'python', 'JavaScript'] });
});
然后我们再views目录下创建一个名为index.ejs
的文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= title %></title>
</head>
<body>
<h1><%= heading %></h1>
<p>我想学习以下技术:</p>
<ul>
<% items.forEach(item => { %>
<li><%= item %></li>
<% }); %>
</ul>
</body>
</html>
在这个文件中,我们使用了EJS的<%= %>
标签来输出变量。当这个文件被渲染时,这些变量将被替换为实际的值。
3.2 布局模板
在实际应用中,我们通常会使用布局模板来统一管理页面的公共部分。布局模板通常包含页面的头部、导航栏和底部等元素。
我们在views目录下创建 layout.ejs文件,文件内容如下。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= title %></title>
</head>
<body>
<header>头部</header>
<nav>导航栏</nav>
<main>
主体
</main>
<footer>底部</footer>
</body>
</html>
然后,在index.ejs中,我们可以使用<%- include() %>
标签来包含布局模板:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= title %></title>
</head>
<body>
<h1><%= heading %></h1>
<p>我想学习以下技术:</p>
<ul>
<% items.forEach(item => { %>
<li><%= item %></li>
<% }); %>
</ul>
<%- include('layout') %>
</body>
</html>
4. EJS模板语法
EJS提供了一套简单的模板语法,用于在HTML文件中嵌入JavaScript代码。以下是一些常用的EJS模板语法:
<%= variable %>
:输出变量的值。
<%= title %>
将输出title
变量的值。
<%- expression %>
:输出表达式的结果。
<%- include('layout') %>
将输出include('layout')
表达式的结果。
<% if (condition) { %>...<% } %>,
条件语句。
<% if (user) { %>Welcome, <%= user.name %>!<% } %>
将输出用户的名字,如果用户存在的话。
<% function() { ... } %>
:自定义函数。
<% function displayItem(item) { return item.name; } %>
定义了一个名为displayItem
的函数,该函数接受一个参数item
并返回其name
属性。
5. EJS模板继承
EJS支持模板继承,即在一个子模板中包含另一个父模板的内容。这有助于减少重复代码,提高代码的可维护性。要实现模板继承,可以在子模板中使用<%- extends 'parent' %>
标签来指定父模板的名称。然后,在子模板中可以使用<%- block 'content' %>
标签来定义一个块,该块将在父模板中被替换为实际的内容。
例如,我们有一个名为header.ejs
的父模板和一个名为index.ejs
的子模板:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= title %></title>
</head>
<body>
<header>Header</header>
我们在index.ejs页面当中引入一下代码。
<%- extends 'header' %>
<%- block 'content' %>
<h1><%= heading %></h1>
<p><%= message %></p>
<%- endblock %>
在index.ejs
中,我们使用<%- block 'content' %>
标签来定义一个名为content
的块,该块将在header.ejs
中被替换为实际的内容。这样,我们就实现了模板继承,避免了重复编写相同的HTML代码。