1.修改路由

app

  • index.js
  • home.js
  • user.js
  1. 创建 home.js, user.js 子路由文件 ```javascript const Router = require(‘koa-router’) const router = new Router()

router.get(‘/‘, ctx => { ctx.body = ‘这是主页’ })

module.exports = router

  1. ```javascript
  2. const Router = require('koa-router')
  3. // 配置 user router
  4. const router = new Router({ prefix: '/users' })
  5. router.get('/:id', ctx => {
  6. ctx.body = 'user list'
  7. })
  8. ...
  9. module.exports = router
  1. 创建index.js 脚本实现路由动态注册 ```javascript const fs = require(‘fs’)

// 批量注册 route module.exports = app => { fs.readdirSync(__dirname).forEach(file => { if (file === ‘index.js’) return const route = require(./${file}) app.use(route.routes()) .use(route.allowedMethods()) }) }

  1. 3.app/index.js中使用脚本
  2. ```javascript
  3. const routing = require('./routes')
  4. routing(app)

2.添加controller控制器

  1. 创建controller ```javascript class HomeCtl { index(ctx) { ctx.body = ‘home page’ } }

module.exports = new HomeCtl()

  1. 2. 在路由中使用
  2. ```javascript
  3. const homeCtl = require('../controllers/home')
  4. router.get('/', homeCtl.index)

3.错误处理

  1. koa 自带,手动抛出

    1. ctx.throw(412, 'id大于数组长度')
  2. 自定义错误中间件

    1. app.use(async (ctx, next) => {
    2. try {
    3. await next()
    4. } catch(err) {
    5. // catch 会接住内部抛出的错误
    6. ctx.status = err.status || err.statusCode
    7. ctx.body = {
    8. message: err.message
    9. }
    10. }
    11. })
  3. 使用 koa-json-error

  • 安装

    1. npm i koa-json-error -S
  • 使用 ```javascript const error = require(‘koa-json-error’) app.use(error())

// 抛出错误 ctx.throw(412, ‘错误’)

  1. - 关闭stack信息
  2. ```javascript
  3. app.use(error({
  4. // 定制返回格式
  5. postFormat: (err, { stack, ... rest }) => process.env.NODE_ENV === 'production' ? rest : { stack, ...rest }
  6. }))

4.通过cross-env插件手动修改环境变量

  1. 安装cross-env

npm i cross-env -D

  1. 修改package.json

    1. "scripts": {
    2. "start": "cross-env NODE_ENV=production node app", // 生产
    3. "dev": "nodemon app" // 开发
    4. },

    5.使用koa-parameter 校验参数

  2. 安装

npm i koa-parameter -S

  1. 使用
    1. const parameter = require('koa-parameter')
    2. app.use(parameter(app))
  • 校验
    1. // 校验参数格式
    2. ctx.verifyParams({
    3. // required 默认为 true
    4. name: { type: 'string', required: true },
    5. age: { type: 'number', required: false }
    6. })