Koa2 路由拆分成多文件

在使用koa-router的時(shí)候會(huì)遇到路由的配置娃惯,雖然基本的配置很簡(jiǎn)單皆撩,但是當(dāng)我們的業(yè)務(wù)越來越復(fù)雜捍壤,涉及到的路由也越來越多槽畔,最開始的單文件路由配置就難以維護(hù)了栈妆。所以我們需要將路由根據(jù)模塊進(jìn)行拆分,從而根據(jù)模塊配置相應(yīng)的路由厢钧。

但是我們一般在進(jìn)行拆分的時(shí)候可能會(huì)遇到下面這樣的用法鳞尔,這屬于常規(guī)用法,但是模塊多了也就不怎么好看了早直。

app.use(A.routes())
app.use(A.allowedMethods())
app.use(B.routes())
app.use(B.allowedMethods())
app.use(C.routes())
app.use(C.allowedMethods())

因此我們可以采用koa-compose這個(gè)方法對(duì)其進(jìn)行優(yōu)化铅檩。

假設(shè)我們有三個(gè)路由模塊分別為A、B莽鸿、C,首先新建文件夾routes,并在routes文件夾下新建A.js昧旨、B.js拾给、C.js、index.js

routes/A.js
const Router = require('koa-router')

const router = new Router()

router.prefix('/A')

router.get('/all',(ctx,next)=>{
    ctx.body = "hello A module router"
})

module.exports = router
routes/B.js
const Router = require('koa-router')

const router = new Router()

router.prefix('/B')

router.get('/all',(ctx,next)=>{
    ctx.body = "hello B module router"
})

module.exports = router
routes/C.js
const Router = require('koa-router')

const router = new Router()

router.prefix('/C')

router.get('/all',(ctx,next)=>{
    ctx.body = "hello C module router"
})

module.exports = router
routes/index.js
const compose = require('koa-compose')
const glob = require('glob')
const { resolve } = require('path')

registerRouter = () => {
    let routers = [];
    glob.sync(resolve(__dirname, './', '**/*.js'))
        .filter(value => (value.indexOf('index.js') === -1))
        .map(router => {
            routers.push(require(router).routes())
            routers.push(require(router).allowedMethods())
        })
    return compose(routers)
}

module.exports = registerRouter
index.js
const Koa = require('koa')
const registerRouter  = require('./routes')

const app = new Koa()

app.use(registerRouter())

app.listen(3000)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兔沃,一起剝皮案震驚了整個(gè)濱河市蒋得,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乒疏,老刑警劉巖额衙,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異怕吴,居然都是意外死亡窍侧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門转绷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伟件,“玉大人,你說我怎么就攤上這事议经「耍” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵煞肾,是天一觀的道長(zhǎng)咧织。 經(jīng)常有香客問我,道長(zhǎng)籍救,這世上最難降的妖魔是什么习绢? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮蝙昙,結(jié)果婚禮上毯炮,老公的妹妹穿的比我還像新娘。我一直安慰自己耸黑,他們只是感情好桃煎,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著大刊,像睡著了一般为迈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缺菌,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天葫辐,我揣著相機(jī)與錄音,去河邊找鬼伴郁。 笑死耿战,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的焊傅。 我是一名探鬼主播剂陡,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼狈涮,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了鸭栖?” 一聲冷哼從身側(cè)響起歌馍,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晕鹊,沒想到半個(gè)月后松却,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡溅话,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年晓锻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片飞几。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡砚哆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出循狰,到底是詐尸還是另有隱情窟社,我是刑警寧澤券勺,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布绪钥,位于F島的核電站,受9級(jí)特大地震影響关炼,放射性物質(zhì)發(fā)生泄漏程腹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一儒拂、第九天 我趴在偏房一處隱蔽的房頂上張望寸潦。 院中可真熱鬧,春花似錦社痛、人聲如沸见转。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)斩箫。三九已至,卻和暖如春撵儿,著一層夾襖步出監(jiān)牢的瞬間乘客,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工淀歇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留易核,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓浪默,卻偏偏與公主長(zhǎng)得像牡直,于是被迫代替她去往敵國(guó)和親缀匕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容