最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Koa2中間件的作用及路由實(shí)現(xiàn)實(shí)例詳解

 更新時(shí)間:2023年05月24日 10:42:17   作者:前端老兵  
這篇文章主要介紹了Koa2中間件的作用及路由實(shí)現(xiàn)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

中間件 與 koa2中間件

通俗的講:中間件就是匹配路由之前或者匹配路由完成做的一系列的操作,我們就可以 把它叫做中間件。

中間件的作用就是,在上下兩個事件通訊的過程中強(qiáng)行塞入一個事件,這個事件可以起到承上啟下的作用,并在運(yùn)行應(yīng)用的時(shí)候做一些只關(guān)于部分模塊化功能。

中間件其實(shí)并不是koa2的發(fā)明,在express中就已經(jīng)存在了,只不過koa2站在了es7巨人的肩膀上,使用async await讓中間件形成了一個飽滿的洋蔥型。

Koa 中間件采用的是洋蔥圈模型,每次執(zhí)行下一個中間件傳入兩個參數(shù) ctx 和 next,參數(shù) ctx 是由 koa 傳入的封裝了 request 和 response 的變量,可以通過它訪問 request 和 response,next 就是進(jìn)入下一個要執(zhí)行的中間件 。

// 中間件,暴露一個函數(shù)
module.exports = function () {
  return async function (ctx, next) {
    pv(ctx);
    // 執(zhí)行下一個中間件,沒有下一個中間件就執(zhí)行完了
    await next();
  };
};

koa2的中間件可以有好幾層,在每一次請求與響應(yīng)的時(shí)候,都可以在中間攔截,

做登錄態(tài)管理、狀態(tài)碼管理、錯誤處理...總之每個中間件都可以做一次攔截來搞事情。

Koa 中間件作用

中間件功能是可以訪問請求對象(request),響應(yīng)對象(response)和應(yīng)用程序的請求-響應(yīng)周期中通過 next 對下一個中間件函數(shù)的調(diào)用。

通俗來講,利用這個特性在 next 之前對 request 進(jìn)行處理,在 next 函數(shù)之后對 response 處理。Koa 的中間件模型可以非常方便的實(shí)現(xiàn)后置處理邏輯。

實(shí)例

const koa = require('koa')
const app = new koa()
app.use(async (ctx,next) => {
    console.log('1')
    await next()
    console.log('1-1')
    ctx.body = 'hello world'
})
app.use(async (ctx,next) => {
    console.log('2')
    await next()
    console.log('2-1')
})
app.use((ctx) => {
    console.log('3')
})
app.listen(3000)

輸出

1
2
3
2-1
1-1

自己編寫一個Koa路由中間件

官網(wǎng)地址https://koa.bootcss.com/index.html#request

const koa = require('koa')
const app = new koa()
app.use(async (ctx) => {
    if (ctx.url === '/') {
        console.log('這是首頁');
        ctx.body = '這是首頁'
    } else if (ctx.url === '/user') {
        if (ctx.method === 'GET') {
            console.log('這是用戶列表頁');
            ctx.body = '這是用戶列表頁'
        } else if (ctx.method === 'POST') {
            console.log('添加用戶');
            ctx.body = '添加用戶'
        }
    } else {
        ctx.status = 404
    }
})
app.listen(3000)

使用koa-router實(shí)現(xiàn)路由

const koa = require('koa')
const Router = require('koa-router')
const app = new koa()
const router = Router({
    prefix: '/user'
})
router.get('/', async (ctx) => {
    ctx.body = '這是用戶首頁'
})
router.get('/del', async (ctx) => {
    ctx.body = '刪除用戶'
})
router.post('/add', async (ctx) => {
    ctx.body = '添加用戶'
})
app.use(router.routes())
app.listen(3000)

參考文檔 https://koa.bootcss.com/index.html

以上就是Koa2中間件的詳細(xì)內(nèi)容,更多關(guān)于Koa2中間件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Node.js接入DeepSeek實(shí)現(xiàn)流式對話功能

    Node.js接入DeepSeek實(shí)現(xiàn)流式對話功能

    隨著人工智能技術(shù)的發(fā)展,越來越多的服務(wù)和應(yīng)用開始集成AI能力以提升用戶體驗(yàn),本文將介紹如何通過Node.js接入DeepSeek提供的API服務(wù),特別是其聊天完成(Chat?Completions)功能,為您的應(yīng)用增添智能對話能力,需要的朋友可以參考下
    2025-02-02
  • Node.js中用D3.js的方法示例

    Node.js中用D3.js的方法示例

    這篇文章主要給大家介紹了在Node.js中用D3.js的方法,文中分別介紹了如何安裝模塊和一小段簡單的示例代碼,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • nodejs抓取notion?emoji?svg資源的腳本示例

    nodejs抓取notion?emoji?svg資源的腳本示例

    這篇文章主要為大家介紹了nodejs抓取notion?emoji?svg資源腳本實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • nodejs同步調(diào)用獲取mysql數(shù)據(jù)時(shí)遇到的大坑

    nodejs同步調(diào)用獲取mysql數(shù)據(jù)時(shí)遇到的大坑

    今天小編就為大家分享一篇關(guān)于nodejs同步調(diào)用獲取mysql數(shù)據(jù)時(shí)遇到的大坑,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 詳解node.js的http模塊實(shí)例演示

    詳解node.js的http模塊實(shí)例演示

    這篇文章主要介紹了詳解node.js的http模塊實(shí)例演示,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Node.js API詳解之 util模塊用法實(shí)例分析

    Node.js API詳解之 util模塊用法實(shí)例分析

    這篇文章主要介紹了Node.js API詳解之 util模塊用法,結(jié)合實(shí)例形式分析了node.js API中util模塊基本功能與相關(guān)函數(shù)使用技巧,需要的朋友可以參考下
    2020-05-05
  • Node.js中使用mongoose操作mongodb數(shù)據(jù)庫的方法

    Node.js中使用mongoose操作mongodb數(shù)據(jù)庫的方法

    如何利用mongoose將數(shù)據(jù)寫入mongodb數(shù)據(jù)庫呢?操作方法很簡單,下面小編給大家分享Node.js中使用mongoose操作mongodb數(shù)據(jù)庫的方法,感興趣的朋友一起看看吧
    2017-09-09
  • node如何實(shí)現(xiàn)cmd彈窗交互之inquirer

    node如何實(shí)現(xiàn)cmd彈窗交互之inquirer

    這篇文章主要介紹了node如何實(shí)現(xiàn)cmd彈窗交互之inquirer問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • nodejs aes 加解密實(shí)例

    nodejs aes 加解密實(shí)例

    今天小編就為大家分享一篇nodejs aes 加解密實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Node.js中Express框架的使用教程詳解

    Node.js中Express框架的使用教程詳解

    這篇文章主要為大家詳細(xì)介紹了Node.js中的開發(fā)框架Express,利用Express框架可以快速的進(jìn)行Web后端開發(fā),感興趣的小伙伴可以了解一下
    2022-04-04

最新評論

梁河县| 蓝山县| 会同县| 聂拉木县| 慈溪市| 宝兴县| 西畴县| 阳信县| 当阳市| 扎赉特旗| 调兵山市| 湟中县| 东方市| 庐江县| 怀安县| 普定县| 江陵县| 沅江市| 葵青区| 宝应县| 环江| 南充市| 象山县| 宁城县| 綦江县| 德昌县| 宜兰市| 黎城县| 门源| 承德县| 泸定县| 安康市| 辰溪县| 曲阳县| 海原县| 广元市| 当涂县| 东乌| 南川市| 凤山市| 石楼县|