微信小程序雲函數路由優化tcb-router

TencentCloudBase/tcb-router

  • 一個用戶在一個雲環境中只能創建50個雲函數
  • 相似的請求歸類到同一個雲函數處理
  • tcb-router是一個koa風格的雲函數路由庫

koa洋蔥模型

在這裏插入圖片描述

在這裏插入圖片描述

tcb-router:基於 koa 風格的小程序·雲開發雲函數輕量級類路由庫,主要用於優化服務端函數處理邏輯

雲函數端使用

新建tcbrouter雲函數

右鍵-在雲端中打開
在這裏插入圖片描述

安裝tcb-router:

npm install --save tcb-router

在這裏插入圖片描述

在這裏插入圖片描述

新建名爲tcbrouter的雲函數

在其js文件中添加如下代碼:

// 雲函數入口文件
const cloud = require('wx-server-sdk')
const TcbRouter = require('tcb-router')
cloud.init()

// 雲函數入口函數
exports.main = async(event, context) => {
  const app = new TcbRouter({
    event
  })

  app.use(async(ctx, next) => {
    console.log('進入全局中間件')
    ctx.data = {}
    ctx.data.openId = event.userInfo.openId
    await next()
    console.log('退出全局中間件')
  })

  app.router('music', async(ctx, next) => {
    console.log('進入音樂名稱中間件')
    ctx.data.musicName = '光年之外'
    await next()
    console.log('退出音樂名稱中間件')
  }, async(ctx, next) => {
    console.log('進入音樂類型中間件')
    ctx.data.musicType = '華語歌曲'
    ctx.body = {
      data: ctx.data
    }
    console.log('退出音樂類型中間件')
  })

  app.router('movie', async(ctx, next) => {
    console.log('進入電影名稱中間件')
    ctx.data.movieName = '肖申克的救贖'
    await next()
    console.log('退出電影名稱中間件')
  }, async(ctx, next) => {
    console.log('進入電影類型中間件')
    ctx.data.movieType = '美國電影'
    ctx.body = {
      data: ctx.data
    }
    console.log('退出電影類型中間件')
  })
  return app.serve()
}

編寫完後,上傳雲函數。

demo.wxml中添加兩個按鈕

<button bind:tap="getMusicInfo">獲取音樂信息</button>
<button bind:tap="getMovieInfo">獲取電影信息</button>

demo.js中添加兩個方法

  getMusicInfo() {
    wx.cloud.callFunction({
      name: 'tcbrouter',
      data: {
        $url: 'music'
      },
    }).then((res) => {
      console.log(res)
    })
  },
  getMovieInfo() {
    wx.cloud.callFunction({
      name: 'tcbrouter',
      data: {
        $url: 'movie'
      }
    }).then((res) => {
      console.log(res)
    })
  },

點擊兩個按鈕,分別打印一下信息,說明路由設置成功
在這裏插入圖片描述

查看雲函數的日誌,如下圖:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章