dotenv
将环境变量加载到process.env中.用法如下:
安装
npm install dotenv@16.3.1
目录
使用
// 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对象