- 项目创建
- 常用中间件处理请求方式
- 路由进阶
- 项目中各依赖包版本管理
- 其他中间件
项目创建
执行以下命令安装依赖和创建jkoa项目
npm init -y
npm install -S koa
npm install -S koa-router
编写第一个hello world
const koa = require("koa")
const koaRouter = require("koa-router")
const app = new koa()
const router = new koaRouter()
router.get("/api", async (ctx)=>{
ctx.body = "hello api"
})
router.get("/index", async (ctx)=>{
ctx.body = "hello index"
}
app.use(router.routes())
app.use(router.allowedMethods())
app.listen(3000)
常用中间件处理请求方式和跨域问题
安装依赖
npm install -S koa-body @koa/cors
- koa-body : 协议解析器 (具体自定义配合参数,查看NPM官方文档)
- @koa/cors :用于解决跨域问题 (具体自定义配合参数,查看NPM官方文档)
使用
...
const koaBody = require("koa-body")
const cors = require("@koa/cors")
...
app.use(koaBody())
app.use(cors())
...
路由进阶
项目模块化区分
项目目录
-src
-api // 用于存放业务的回调函数
-router // 用来存放路由的相关文件
-index.js // koa的整合文件.相当于vue中main.js
-package-lock.json
-package.json
路由压缩
安装
npm install koa-combine-routers -S
使用
在 src/api 下面创建创建 demo.js 用于存放业务的逻辑代码
class demoCombint {
constructor(){}
const demo = (ctx)=>{
ctx.body = "this is demo"
}
}
module.exports = new demoCombint()
在 src / router 下面创建 demoRouter.js 用于存储关于demo模块的路由模块
const koaRouter = require("koa-router")
const demo = require("../api/demoRouter")
const router = new KoaRouter()
router.get("/demo",demo)
module.exports = router
在 src / router 下面创建 routes.js 用于整合路由模块化
const Router = require('koa-router')
const combineRouters = require('koa-combine-routers')
const demoRouter = require("./demoRouter")
const router = combineRouters(demoRouter)
module.exports = router
最后在 src / index 项目下构建整体的项目
const Koa = require("koa")
const app = new Koa()
const router = require("./router/routes")
app.use(router())
app.listen(3000)
实现热加载
npm i nodemon -S
在 package.json 中配置
"script":{
"start":"npx nodemon src/index.js"
}
项目中各依赖包版本管理
npm i npm-check-updates -g
ncu // 检查项目依赖是否更新
ncu -u // 更新依赖项版本,只是在package.json中更改,需要重新 install
其他中间件
用于解决koa安全问题
npm install koa-helmet -S
...
const helmet = require("koa-helmet")
app.use(helmet())
...
用于静态资源访问
npm i koa-static -S
...
const static = require("koa-static")
const path = require("path")
...
app.use(static(path.join(__dirname,"../public")))
...
整合 koa 中间件依赖
npm i koa-compase -S
用法详见 npm 官方文档
压缩中间件
npm i koa-compress -S
用法详见 npm 官方文档