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

本文介绍了如何将Koa应用中的业务模块与路由注册进行拆分,以提高代码可维护性和易读性。在`modules/user.js`中,仅保留业务逻辑,定义了获取用户、添加用户和编辑用户的异步方法。然后在`modules/index.js`中统一引入各模块。最后在`router/index.js`中,通过遍历`modules`导出的路由对象,根据请求类型注册对应的路由。这种结构使得业务代码与路由配置分离,更便于管理和扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在我们做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、付费专栏及课程。

余额充值