在我們做koa-router配置的時(shí)候會(huì)遇到業(yè)務(wù)模塊與路由注冊(cè)混合在一起血淌,要進(jìn)行拆分才有利于后期維護(hù)與查看,最近看了很多文章發(fā)現(xiàn)拆分后的業(yè)務(wù)文件都是用router再注冊(cè)一遍谓厘,實(shí)際上我們只要業(yè)務(wù)模塊暴露它自己的方法幌羞,請(qǐng)求方式及URL就可以了,其他的內(nèi)容不是業(yè)務(wù)模塊所關(guān)心的竟稳,今天來分享下koa-router的路由模塊化属桦、業(yè)務(wù)文件拆分,使它們都“各司其職”
文件夾結(jié)構(gòu)大致如下:
modules
-- xxx.js 業(yè)務(wù)模塊代碼
-- index.js 用于業(yè)務(wù)模塊的統(tǒng)一引入
router
-- index.js 路由注冊(cè)核心文件
image
modules/user.js
在此之模塊js中只寫入業(yè)務(wù)代碼的內(nèi)容他爸、請(qǐng)求方式聂宾、請(qǐng)求地址
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
當(dāng)我們拆分了多個(gè)模塊,需要一個(gè)統(tǒng)一引入的入口文件
const userRoutes = require('./user')
const companyRoutes = require('./company')
module.exports = [ ...userRoutes, ...companyRoutes ]
router/index.js
最后則是路由文件統(tǒng)一進(jìn)行注冊(cè)
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)