小程序云函数的高级玩法-路由

一般情况下,一个云函数完成单一的逻辑功能,就是一个类的方法一样,如图:

但是受限免费用户最多只能使用20个云函数,想要在单一云函数中实现多个复杂的功能就需要通过参数来区别,可读性差,不利于管理。通过路由,尝试将请求归类,一个云函数处理某一类的请求,比如有专门负责处理用户的,或者专门处理支付的云函数。如图:

为了方便大家试用,腾讯云 Tencent Cloud Base 团队开发了 tcb-router,云函数路由管理库方便大家使用。

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

使用

npm install --save tcb-router

云函数端

// 云函数的 index.js
const TcbRouter = require(‘./router‘);

exports.main = (event, context) => {
    const app = new TcbRouter({ event });

    // app.use 表示该中间件会适用于所有的路由
    app.use(async (ctx, next) => {
        ctx.data = {};
        await next(); // 执行下一中间件
    });

    // 路由为数组表示,该中间件适用于 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();

}

tips: 小程序云函数的 node 环境默认支持 async/await 语法,推荐涉及到的异步操作时像 demo 中那样使用

小程序端

// 调用名为 router 的云函数,路由名为 user
wx.cloud.callFunction({
    // 要调用的云函数名称
    name: "router",
    // 传递给云函数的参数
    data: {
        $url: "user", // 要调用的路由的路径,传入准确路径或者通配符*
        other: "xxx"
    }
});

完整的实例,请参考我的另一篇博客: 分享使用tcb-router路由开发的云函数短信平台SDK请添加链接描述

原文地址:https://blog.51cto.com/7174555/2382028

时间: 2024-11-05 11:41:00

小程序云函数的高级玩法-路由的相关文章

如何使用微信小程序云函数发送短信验证码

其实微信小程序前端和云端都是可以调用短信平台接口发送短信的,使用云端云函数的好处是无需配置域名,也没有个数限制. 本文使用的是榛子云短信平台(http://smsow.zhenzikj.com) ,SDK下载: http://smsow.zhenzikj.com/doc/sdk.html 1. 安装下载后的SDK在cloudfunctions文件夹下会包含3个云函数文件夹,如下: 由于目前IDE没有云函数导入功能,您需要手工创建同名的云函数,然后将云函数下的文件手工拷进去 注:下载的SDK是一个

微信小程序云函数Windows下安装wx-server-sdk

第一次上传部署云函数时,会提示这个,建议在这之前先安装一下node.js. https://nodejs.org/en/ 下载nodejs,然后直接安装,在cmd控制台输入node -v和npm -v,这两个打印版本号的命令可以判断node和npm是否安装成功. 这时可以进行第一次上传部署云函数的操作了,如果你已经执行过了,那现在就需要手工来安装wx-server-sdk依赖了. 打开cmd控制台,进入到云函数的文件夹,然后执行: npm install --save [email protec

小程序云函数查询数据库时result一直为null

查询数据库时,使用到了云函数 // 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() /////////////////////////////// exports.main = async (event, context) => { var nickname = event.nickname try { return await db.collection('user_

【微信小程序云开发】从陌生到熟悉

前言 微信小程序在9月10号正式上线了云开发的功能,弱化后端和运维概念,以前开发一个小程序需要申请一个小程序,准备一个https的域名,开发需要一个前端一个服务端,有了云开发只有申请一个小程序,一个前端就能搞定,真的是零成本. 云开发三大基础能力 云函数:运行在微信服务器上的函数,处理微信相关操作有天然优势,如获得用户信息异常方便(以前服务端解析很麻烦) 数据库:一个小程序可以直接操作的JSON数据库,可以直接操作数据库,不在需要服务端了. 存储:用来存储文件和图片 阅读本文之前最好对微信小程序

微信小程序云开发-从0打造云音乐全栈小程序

第1章 首门小程序“云开发”课程,你值得学习本章主要介绍什么是小程序云开发以及学习云开发的重要性,并介绍项目的整体架构,真机演示项目功能,详细介绍整体课程安排.课程适用人群以及需要掌握的前置知识.通过本章的学习,能够使大家对本门课程有一个整体的了解.... 第2章 云开发介绍以及从0构建项目本章会详细介绍小程序云开发与Serverless,并介绍如何开通小程序云开发及控制台的功能,并且初始化项目代码,讲解airbnb/javascript代码规范. 第3章 播放列表功能实现本章完成歌单列表与歌曲

PyQt 5信号与槽的几种高级玩法

PyQt 5信号与槽的几种高级玩法 http://www.broadview.com.cn/article/824 在Qt中,每一个QObject对象和PyQt中所有继承自QWidget的控件(这些都是QObject的子对象)都支持信号与槽机制.当信号发射时,连接的槽函数将会自动执行.在PyQt 5中信号与槽通过object.signal.connect()方法连接. PyQt的窗口控件类中有很多内置信号,开发者也可以添加自定义信号.信号与槽具有如下特点. 一个信号可以连接多个槽. 一个信号可以

小程序 · 云开发

9 月 11 日,微信开发者工具新增小程序「云开发」功能. 大多数开发者在开发应用时和部署服务时,无论是选择公有云还是自建数据中心,都需要提前考虑服务器.存储和数据库等需求,并且会花费时间精力在部署应用.依赖上.而通过「小程序·云开发」,开发者可以开发微信小程序.小游戏,无需搭建服务器,即可使用云端能力,实现小程序的快速上线和迭代. 「小程序·云开发」将以服务的方式为开发者提供如云函数.数据库.存储管理等所需功能,大大降低了小程序的开发门槛,仅需通过「小程序·云开发」提供的接口,就能实现因缺乏后

小程序云开发之新闻类项目分析

应该每一个前端开发者都有一颗全干全栈的心??吧. 那就让云开发满足你 云开发一出来就开始玩,云数据库,云函数,全栈的体验和开发速度,真的不是一般的爽. 接下来工作中要开发一款新闻类小程序,于是就开始了对头条君的调研,此篇文章,是我的个人总结和分析,欢迎大佬拍砖. 一. 准备 小程序云开发必须有小程序AppId才能使用,所以首先应先注册一个小程序账号(如果已有请忽略).设置->开发设置中的小程序AppId 开发工具:编辑器-vscode, 微信开发者工具 辅助工具: Markman:图标标注工具,

轻量级高性能ORM框架:Dapper高级玩法

Dapper高级玩法1: 数据库中带下划线的表字段自动匹配无下划线的Model字段. Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true; 备注: 这个对使用Mysql数据库的朋友最有帮助,因为Mysql默认都是小写,一般字段都带下划线,比如:user_name之类. 具体效果如下演示 1,首先创建一张表并插入数据 2,创建Model模型 public class User { public int UserID { get; set;