美文网首页
小程序云函数路由优化 tcb-router

小程序云函数路由优化 tcb-router

作者: 泡杯感冒灵 | 来源:发表于2021-01-12 10:52 被阅读0次
之所以要进行云函数路由优化,是因为
  • 一个用户,在一个云环境中,只能创建50个云函数。一个用户最多创建2个云环境,也就是说,一个用户最多只能创建100个云函数。如果我们要开发的项目非常复杂,需要更多的云函数该怎么办?
  • 相似的请求归类到同一个云函数。比如音乐相关的功能,我们需要获取歌单列表,需要获取每个歌单里的每首歌曲,还需要每首歌曲的歌词。如果一个需求就创建一个云函数,那么将需要大量的云函数。如果我们能把音乐相关的需求都放到一个云函数中,那么不但能够起到一个很好的归类的作用,让我们更好的去管理我们的云函数,还能节约本来就不多的云函数创建名额。
云函数路由优化的解决方案 tcb-router
  • tcb-router 是一个koa风格的云函数路由库

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

  • koa 洋葱模型。每个中间件执行后,并不会立刻响应,而是一直往内层中间件执行,一直执行到最后一层中间件,然后从最后一层开始响应。 顺序类似于 3->2->1->1->2->3
    image.png
  • 每一层中间件在代码中相当于一个函数,一个中间件可以负责某一个特定的功能。然后通过next()函数把每个中间件之间关联起来

tcb-router的使用

image.png
  • 打开https://github.com/TencentCloudBase/tcb-router,可以看到相关的文档。
  • 安装tcb-router的命令 npm install --save tcb-router
  • 然后在云函数中使用
// 云函数的 index.js
// 先引入tcb-router,引入的名称就是package.json里的安装包的名称
const TcbRouter = require('tcb-router')

exports.main = (event, context) => {
    const app = new TcbRouter({ event });
  
    // app.use 表示该中间件会适用于所有的路由
    app.use(async (ctx, next) => {
        ctx.data = {};
        ctx.data.openid = event.userinfo.openid  // 比如,我们可以在公用中间件里获取openid
        await next(); // 执行下一中间件,如果有公用的路由,而且后边还有其他路由。这个next是必须的。next执行的可能是异步的,所以加 await
    });

    // 路由为数组表示,该中间件适用于 user 和 timer 两个路由
    app.router(['user', 'timer'], async (ctx, next) => {
        ctx.data.company = 'Tencent';
        await next(); // 执行下一中间件
    });

    // 路由为字符串,该中间件只适用于 user 路由
    app.router('user', async (ctx, next) => {
        ctx.data.name = 'heyli';
        await next(); // 执行下一中间件
    }, async (ctx, next) => {
        ctx.data.sex = 'male';
        await next(); // 执行下一中间件
    }, async (ctx) => {
        ctx.data.city = 'Foshan';
        // ctx.body 返回数据到小程序端
        ctx.body = { code: 0, data: ctx.data};
    });

    // 路由为字符串,该中间件只适用于 timer 路由
    app.router('timer', async (ctx, next) => {
        ctx.data.name = 'flytam';
        await next(); // 执行下一中间件
    }, async (ctx, next) => {
        ctx.data.sex = await new Promise(resolve => {
        // 等待500ms,再执行下一中间件
        setTimeout(() => {
            resolve('male');
        }, 500);
        });
        await next(); // 执行下一中间件
    }, async (ctx)=>  {
        ctx.data.city = 'Taishan';

        // ctx.body 返回数据到小程序端
        ctx.body = { code: 0, data: ctx.data };
    });

    return app.serve();

}
  • 在小程序端调用云函数,并指定对应的路由。
// 调用名为 router 的云函数,路由名为 user
wx.cloud.callFunction({
    // 要调用的云函数名称
    name: "router",
    // 传递给云函数的参数
    data: {
        $url: "user", // $url跟的是想调用的路由的名称
        other: "xxx"
    }
});

相关文章

  • tcb-router

    tcb-router基于 koa 风格的小程序·云开发云函数轻量级类路由库,主要用于优化服务端函数处理逻辑基于tc...

  • 小程序云函数路由优化 tcb-router

    之所以要进行云函数路由优化,是因为 一个用户,在一个云环境中,只能创建50个云函数。一个用户最多创建2个云环境,也...

  • 小程序发送短信验证码完整工具

    第一家提供小程序发送短信sdk的平台,支持小程序前端发送、云函数、带路由的云函数,以及60秒倒计时插件。 微信小程...

  • 微信小程序云开发请求路由tcb-router

    1、下载tcb-router包 2、引入tcb-router包 3、初始化router包 4、使用路由

  • 增删改查

    前端 使用路由安装 cnpm i tcb-router -S 后端

  • 简单写个云开发云函数路由

    云开发云函数轻量级类路由库,主要用于优化服务端函数处理逻辑 随着云函数数量的增多,有的并发量不大的云函数目前是用路...

  • 微信小程序开发——学习笔记(三)

    微信小程序云开发——云函数 云函数介绍 云函数定义:运行在(腾讯云)上的程序,将需要的函数部署在云开发平台上,即可...

  • 微信云开发 获取用户手机号

    云函数.index内容 云函数.WXBizDataCrypt内容 在小程序内调用

  • 1.2 页面路由(页面跳转,切换)

    在小程序中所有页面的路由全部由框架进行管理。 路由方式 对于路由的触发方式以及页面生命周期函数如下: 路由方式触发...

  • 小程序云函数

    如何创建小程序云函数 右键点击cloudFunctions,然后点击新建Node.js云函数,之后输入云函数名称就...

网友评论

      本文标题:小程序云函数路由优化 tcb-router

      本文链接:https://www.haomeiwen.com/subject/gmicaktx.html