单站点网站广州印刷网站建设
文章目录
- 安装配置koa2
 - 配置nodemon,热更新我们的项目
 
- 中间件
 - 什么是中间件
 - 👻洋葱模型
 - 路由中间件
 
- 连接数据库 - mysql
 - 后端允许跨域
 - 处理请求
 - get
 - post
 - put
 - delete
 
- 后续会继续更新
 
 
安装配置koa2
👻安装 koa2
npm i koa2 -s
 
👻在package.json 配置,当然是在npm init的基础之上
"scripts": {"start": "node index.js"...},
 
👻这样就可以 借用 npm run start 来启动
配置nodemon,热更新我们的项目
nodemon详解
npm i nodemon -s
 
👻在package.json中配置 scripts/start 改为
"scripts": {"start": "nodemon index.js"...},
 
中间件
什么是中间件
中间件的本质为一个回调函数,参数包含请求对象、响应对象和执行下一个中间件的函数
 koa中间件采用的是洋葱模型、每次执行下一个中间件传入两个参数
 ctx: 封装了request和response 的变量
 next: 进入下一个要执行的中间件函数
👻洋葱模型

 👻下面的示例代码可以说明这种情况
app.use(async (ctx,next) => {console.log(1)await next()console.log(1)
})
app.use(async (ctx,next) => {console.log(2)await next()console.log(2)
})
app.use(async (ctx,next) => {console.log(3)await next()console.log(3)
})
 
👻结果如下
 
路由中间件
npm i koa-router	-s
 
👻我们直接给koa-router -s 做迁移(单独的文件夹存放),并对该模块进行切片
 新建 Router/index.js
const Router = require('koa-router')
const router =  new Router()
const user = require('./user')
router.use('/user',user.routes(),user.allowedMethods())
// 重定向
router.redirect('/','/user')
module.exports = router
 
👻新建 Router/user.js
const Router = require("koa-router")
const user = new Router()
user.get('/add',(ctx)=>{ctx.body = "添加用户"
})module.exports = user 
👻原本的入口文件 index.js
const koa = require('koa2')
const router = require('./Router')
const { port } = require('./setting')
// 声明一个实例
const app = new koa()/*** router.routers()作用是启动路由* router.allowedMethods()允许所有请求方法111*/
app.use(router.routes(),router.allowedMethods())
app.listen(port, () => {console.log("localhost:"+`${port}`)
}) 
👻以上就完成了路由模块的基本内容
连接数据库 - mysql
👻首先准备好数据库
 👻新建连接数据库的代码
const mysql = require('mysql')const connection = mysql.createConnection({host     : 'localhost',user     : 'root',password : 'xxx',database : 'property'
});connection.connect()connection.query('select * from user',function(err,results,fileds){if(err)throw errconsole.log(results)
})
connection.end()
 
👻在这里mysql的版本过新的话会出现
 Client does not support authentication protocol requested by server; consider upgrading MySQL cli
 这是由于mysql版本过高,8版本的用户密码加密规则与以往的不同,可以参考下面的进行更改,加密规则
 解决办法
👻我们可以选择连接池进行连接,并进行封装
const mysql = require('mysql')
// 连接池
const pool = mysql.createPool({connectionLimit: 10,host: 'localhost',user: 'root',password: 'root',database: 'property'
});/*** 查询操作数据库函数* @param sql sql语句* @param callback 回调函数*/
function query(sql, callback) {pool.getConnection((err, connection) => {if (err) throw errconnection.query(sql, (err, rows) => {callback(err, rows)connection.release()})})
}module.exports = query 
const db = require('../utils/db')
db('select * from user',(err,rows)=>{if(err)throw errconsole.log(rows)
}) 
👻详细内容
 mysql包官方文档
后端允许跨域
npm i koa2-cors
 
👻这个中间件一定要写在路由之前
app.use(cors());
app.use(router.routers(),router.allowMethods());
 
处理请求
我们暂时都是靠postman模拟发送请求
get
post
处理post请求,需要借助koa-body中间件,koa-body支持解析json,也支持文件解析
 在这里安装一下
npm  i  koa-body
 
index.js 入口文件
const {koaBody} = require('koa-body')
app.use(koaBody());
 
