node+express常用中间件

96 阅读3分钟

dotenv

将环境变量加载到process.env中.用法如下:

安装

npm install dotenv@16.3.1

目录

image.png

使用

// app.js
// 导入dotenv
const dotenv = require('dotenv')
// 判断当前环境
const isDev = process.env.NODE_ENV === 'devlopment' ? true : false
// dotenv.config(option) 根据当前环境动态导入环境变量文件
dotenv.config({path: isDev ? './.env.development' : './.env.production'})

chalk

用于美化console输出的内容. 用法如下:

安装

npm install chalk@4.0.0

使用

// app.js
// 导入 chalk
const chalk = require('chalk')
// 变色
console.log(chalk.blue('蓝色'))
// 加粗
console.log(chalk.blod('加粗'))
// 背景变色
console.log(chalk.gbRed('背景变红'))
// 斜体
console.log(chalk.italic('斜体'))
// 下划线
console.log(chalk.underline('下划线'))
// 链式调用
console.log(chalk.blod.blue('蓝色加粗'))

mount-routes

自动挂载routes目录的所有路由,以文件名作为路由的根,也可以指定具体的路径

安装

npm install mount-routes

使用

// app.js
// 导入mount-routes
const mount = require('mount-routes')
// 1.简单用法
mount(app)
// 2.带路径的用法
// 可以打印路由表 true代表展示路由表在打印台
mount(app, path.join(process.cwd(), '/routes'), true)

cors

主要用于解决跨域问题.

原理: CORS 中间件配置在服务端,由一系列 HTTP 响应头组成,这个响应头可以决定浏览器是否阻止前端 JS 代码跨域获取资源,当接口服务器配置了 CORS 中间件之后,发起请求时就会自动配置相应的请求头,进而解除浏览器的跨域访问限制。当浏览器进行跨域请求的时候,会在请求里添加头部 origin,表明自己协议,主机,端口。当服务器收到这个客户端发送的请求之后,如果能够访问,就需要添加头部信息 Access-Control-Arrow-Origin 到响应里面,浏览器收到传回来的这个头部信息就知道能不能进行跨域请求了。

安装

npm install cors

使用

// app.js
const cors = require('cors')
app.use(cors())
// 设置跨域和设置允许的请求的头部信息
app.all('/v1/*', function(req, res, next) {
    //Access-Control-Allow-Origin响应标头指定了该响应的资源是否被允许与给定的来源共享
    res.header('Access-Control-Arrow-Origin', '*')
    res.header('Access-Control-Allow-Headers', 'X-Requested-With, token')
    res.header('Access-Control-Allow-Headers', 'X-Requested-With, Authorization')
    res.header('Content-Type', 'application/json;charset=UTF-8')
    res.header('Access-Control-Allow-Headers', 'Content-Type,Content-Length, Authorization, Accept,X-Requested-With')
    res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
    if (req.method === 'OPTIONS') res.send(200)
    else next()
})

body-parser

用于处理post请求提交的数据. 把数据保存在req.body中, 以一个对象的形式传递给服务器,方便进行后续的处理.由于用户提交什么都会接受, 所以需要在使用数据前进行验证来提高安全性.

此中间件已经被express集成. 无需安装. 可以直接采用express.json()express.urlencoded()实现相同功能.

安装

npm install body-parser

使用

// app.js
const bodyParser = require('body-parser') // 对http请求体进行解析

//bodyParser.json([options]) :解析并返回 json格式的数据,只有 content-type: application/json 才进入这个中间件解析处理
app.use(bodyParser.json())
//bodyParser.urlencoded([options]):表单 post 提交、axios、fetch 等库的 post 请求都需要这个中间件进行解析,返回json的格式数据,当请求的数据类型是application/x-www-form-urlencoded时才会进入这个中间件进行处理
app.use(bodyParser.urlencoded({extended: false}))

express-jwt 和 jsonwebtoken

jsonwebtoken: 生成JWT字符串

express-jwt: 将JWT字符串解析成JSON对象