一、express 是什么? 应用场景是什么?
Express 是一个基于 Node.js 平台的 Web 应用开发框架,它提供了一系列强大的功能和工具,使得开发 Web 应用变得简单、快速和高效。
Express 提供了丰富的 HTTP 请求和响应的 API,可以轻松处理各种 HTTP 请求和响应,包括路由、中间件、请求参数解析、静态文件服务、错误处理等。Express 扩展性强,可以方便地集成其他 Node.js 模块,也可以通过插件系统扩展自身功能。
Express 应用场景非常广泛,可以用于开发各种类型的 Web 应用,包括但不限于:
- RESTful API 服务
- 单页应用程序
- 实时应用程序(如聊天室、游戏)
- 响应式网站
- 后端管理面板
- 博客、CMS、电子商务平台等
总之,无论是什么类型的 Web 应用,使用 Express 都能够快速地进行开发和部署。同时,由于 Express 的灵活性和可扩展性,也可以满足各种定制化需求。
官网: Express - Node.js web application framework
个人:用来写后端接口。
二、express的核心组成部分
Express.js 的核心组成部分包括以下几个部分:
-
应用程序(Application):Express 应用程序是 Express 的核心对象,它代表一个 Web 应用程序。通过创建 Express 应用程序对象,你可以配置路由、中间件、错误处理程序等。
-
路由(Routing):Express 提供了简单而灵活的路由系统,可以根据不同的 URL 请求路径和 HTTP 方法来处理请求。使用路由,你可以将请求分发到不同的处理程序函数,实现对不同请求的逻辑处理。
-
中间件(Middleware):中间件是 Express 应用程序的关键概念。中间件函数可以在请求到达路由处理程序之前或之后执行一些逻辑。Express 中间件可以用来处理请求参数解析、身份验证、日志记录、错误处理等任务。
-
请求对象(Request):Express 提供了一个
req
对象来表示客户端发起的 HTTP 请求。请求对象包含了请求的各种属性,如请求头、请求参数、请求路径等,并提供了一系列方法来访问和操作这些属性。 -
响应对象(Response):Express 提供了一个
res
对象来表示服务器对客户端请求的响应。响应对象包含了设置响应状态码、设置响应头、发送响应数据等方法,使得服务器能够向客户端发送数据和信息。 -
模板引擎(Template Engine):Express 可以与各种模板引擎集成,用于动态生成 HTML 页面。通过设置模板引擎,你可以将数据和模板结合起来生成最终的响应内容。
-
错误处理(Error Handling):Express 具有灵活的错误处理机制。你可以编写自定义的错误处理中间件来捕获和处理各种类型的错误,以确保应用程序的稳定性。
三、express的应用实例(快速掌握express基本使用)
1、基础实例(获取验证码)
后端代码详细目录(这里演示没有和数据库交互、后续文章实例将演示了与数据库交互流程、登录注册、文件上传等等相对复杂流程)
1、新建back文件夹 基础目录结构如下(这里指较为完整目录结构)
新建app.js文件 没有红色字体文件及文件夹会在下包时自动生成
2、搭建一个基础的web服务器
(1) 下载express
npm i express
(2) 使用express搭建服务器
// app.js
// 导入 express
const express = require('express')
// 创建服务器
const app = express()
// 挂载路由
app.get('/eg', (req, res) => {
return res.send('这是演示的接口')
})
// 启动服务器 指定端口号为3001
app.listen(3001, () => {
console.log('App in running http://127.0.0.1:3001')
})
(3) 运行 app.js 文件、并调用接口可以看到如下效果(基础示例)
3、在基础的web服务器基础上构建获取验证接口
(1) 构建路由处理函数
// router_method/auth.js
// 认证中心路由方法
// 导入 svg-captcha
const svgCaptcha = require('svg-captcha')
// 生成 svg 图片验证码的路由方法
exports.createCaptcha = (req, res) => {
// 生成普通验证码图片
// const captcha = svgCaptcha.create({
// size: 4, // 验证码长度
// noise: 3, // 干扰线数量
// fontSize: 50, // 字体大小
// width: 150, // 图片宽度
// height: 50, // 图片高度
// color: true, // 随机颜色
// background: '#f5f5f5' // 背景颜色
// });
// 生成算数表达式图片
const captcha = svgCaptcha.createMathExpr({
size: 6, // 验证码长度
noise: 0, // 干扰线数量
mathMin: 1, // 算术表达式中允许的最小数字
mathMax: 9, // 算术表达式中允许的最大数字
mathOperator: '+-', // 算术表达式中允许的运算符
fontSize: 50, // 字体大小
width: 150, // 图片宽度
height: 50, // 图片高度
color: true, // 随机颜色
background: '#f5f5f5' // 背景颜色
});
// 将验证码文本存储在会话中,以便稍后进行验证
req.session.mathExprCaptcha = captcha.text;
// 返回客户端数据
return res.send({
code: 200,
message: '获取验证码成功!',
data: {
captchaImg: captcha.data,
captchaText: captcha.text
}
})
}
(2) 构建路由模块(通过Router挂载路由并导入路由方法)
// router/auth.js
// 认证中心路由模块
// 导入 express
const express = require('express')
// 导入路由方法
const { createCaptcha } = require('../router_method/auth_method.js')
// 创建 Router 路由对象
const Router = express.Router()
// 挂载路由
Router.get('/captcha', createCaptcha)
// 导出路由对象
module.exports = Router
(3) 入口文件挂载路由
// app.js
// 导入 express
const express = require('express')
// 导入路由对象
// 导入认证中心路由方法
const auth = require('./router/auth.js')
// 创建服务器
const app = express()
// 认证中心
app.use('/auth', auth)
// 启动服务器
app.listen(3001, () => {
console.log('App in running http://127.0.0.1:3001')
})