Node Koa 路由模块化、业务文件拆分

在我们做koa-router配置的时候会遇到业务模块与路由注册混合在一起,要进行拆分才有利于后期维护与查看,最近看了很多文章发现拆分后的业务文件都是用router再注册一遍,实际上我们只要业务模块暴露它自己的方法,请求方式及URL就可以了,其他的内容不是业务模块所关心的

目录结构:
modules
– xxx.js 业务模块代码
– index.js 用于业务模块的统一引入
router
– index.js 路由注册核心文件

目录结构

modules/user.js

在此之模块js中只写入业务代码的内容、请求方式、请求地址

const getUser = async(ctx, next) => {
  ctx.response.body = 'getUser'
}

const addUser = async(ctx, next) => {
  ctx.response.body = 'addUser '
}

const editUser = async(ctx, next) => {
  ctx.response.body = 'editUser '
}

const userRoutes = [{
  type: 'post',
  url: '/user/get',
  method: getUser
}, {
  type: 'post',
  url: '/user/add',
  method: addUser
}, {
  type: 'post',
  url: '/user/edit',
  method: editUser
}]

module.exports = userRoutes

modules/index.js
当我们拆分了多个模块,需要一个统一引入的入口文件

const userRoutes = require('./user')
const companyRoutes = require('./company')
module.exports = [ ...userRoutes, ...companyRoutes ]

router/index.js
最后则是路由文件统一进行注册

const Koa = require('koa')
const Router = require('koa-router')
const modules = require('../modules')
const app = new Koa()
const router = new Router()

for (const route of modules) {
  if (route.type === 'get') {
    router.get(route.url, route.method)
  } else if (route.type === 'post') {
    router.post(route.url, route.method)
  }
}

app.use(router.routes())
app.listen(3000)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值