• This repository has been archived on 08/Dec/2023
  • Stars
    star
    385
  • Rank 111,464 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 6 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

小程序·云开发 云函数类 koa 路由工具

tcb-router

NPM version Build Status npm download npm license Coverage Status

基于 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"
    }
});

接口

构造函数

  • 参数

    • Object,存入云函数的 event 参数
  • 示例

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

app.use

  • 参数

    • Function, 应用于所有路由的中间件
  • 示例

app.use(async (ctx, next) => {
    ctx.data = {};
    await next(); // 执行下一中间件
});

app.router

  • 参数

    • Array|String,路由或路由数组
    • Function, 应用于对应路由的中间伯
  • 示例

app.router(['user', 'timer'], async (ctx, next) => {
    ctx.data = {}
    ctx.data.company = 'Tencent';
    await next(); // 执行下一中间件
});

// 路由为字符串,该中间件只适用于 user 路由
app.router('user', async (ctx, next) => {
    ctx.data.name = 'heyli';
    ctx.body = {code: 0, data: ctx.data}; // 将数据返回给云函数,用ctx.body
});

测试

npm run test

More Repositories

1

Good-practice-tutorial-recommended

优秀实践教程推荐
713
star
2

cloudbase-extension-cms

🚀 一站式云端内容管理系统 - An open source Node.js headless cms based on CloudBase
TypeScript
651
star
3

mp-book

小程序·云开发系列教程
JavaScript
422
star
4

cloudbase-templates

云开发工程模板示例,可通过 CloudBaseFramework 一键创建和部署
JavaScript
205
star
5

cloudbase-examples

TCB 案例
JavaScript
203
star
6

tcb-demo-basic

小程序·云开发系列教程——基础能力DEMO
JavaScript
168
star
7

tcb-admin-node

Tencent Cloud Base on Node.js
TypeScript
106
star
8

cloudbase-action

云开发 Tencent CloudBase Github Action 可以将 Github 项目自动部署到云开发环境,基于 CloudBase Framework,支持静态网站、云函数、云托管、小程序等项目
Shell
103
star
9

image-node-sdk

智能图像服务 node sdk
JavaScript
100
star
10

blog

腾讯·CloudBase团队博客
Vue
63
star
11

cloudbase-cli

The cli tool for cloudbase
TypeScript
48
star
12

cloudbase-js-sdk

Cloudbase 云开发 JavaScript SDK
TypeScript
46
star
13

tcb-js-sdk

云开发 JS SDK
TypeScript
43
star
14

cloudbase-vue

云开发 Vue 插件
JavaScript
36
star
15

handbook

小程序云开发技术训练营教程,即使是编程零基础也可以学。
HTML
36
star
16

tcb-solutions-healthy

云开发 - 疫情期间 - 健康上报解决方案
JavaScript
34
star
17

node-sdk

cloudbase node sdk
TypeScript
26
star
18

cloudbase-minishop

Serverless Day Demo
TypeScript
24
star
19

tcb-juejin-workshops

腾讯云学院 x 掘金开发者大会小程序·云开发 workshop
JavaScript
22
star
20

TencentCloudBase.github.io

HTML
19
star
21

cloudbase-manager-node

The node cloudbase manager tool
TypeScript
18
star
22

tcb-solutions-traffic

云开发抗疫 - 2020 - 交通解决方案
JavaScript
15
star
23

webify-templates

CloudBase Webify模板
TypeScript
14
star
24

cloudbase-realtime-demo

JavaScript
12
star
25

awesome-tcb

云开发优质资源汇总
12
star
26

cloudbase-quickstart-js

云开发 快速开始 demo
JavaScript
12
star
27

pai-instance-document

腾讯云PAI实例文档
11
star
28

tcb-solutions-community

JavaScript
9
star
29

tcb-service-sdk

云开发增值服务SDK(小程序/Node)
JavaScript
9
star
30

sms-node-sdk

腾讯云短信服务 Node SDK
JavaScript
7
star
31

cloudbase-flutter-sdk

Flutter Package for 云开发
Dart
7
star
32

pai

7
star
33

cloudbase-ui-react

TypeScript
6
star
34

cloudbase-android-sdk

android sdk for tencent cloud base
Java
6
star
35

function-to-run

将云函数转换为云托管
JavaScript
5
star
36

cloudbase-ai-itinerary-example

云开发 AI 路书小程序示例
JavaScript
4
star
37

weda-custom-components

腾讯云微搭低代码平台自定义组件示例仓库
JavaScript
4
star
38

cloudbase-react-hooks

React Hooks for Cloudbase
JavaScript
3
star
39

weda-devtools

微搭低代码开发者调试工具,可以调试实时预览地址,查看应用的运行状态、数据请求、调试代码和查看完整配置
3
star
40

tcb-js-sdk-database

TypeScript
2
star
41

jwt-sdk

利用云开发给主机服务进行鉴权
JavaScript
2
star
42

lowcode-comps-template-vue

JavaScript
2
star
43

weda-examples

腾讯云微搭低代码社区应用模板
2
star
44

cloudbase-toolkit

The vscode plugin for cloudbase
2
star
45

lowcode-comps-template-typescript

TypeScript
2
star
46

cloudbase-adapter-nodejs

TypeScript
1
star
47

pai-template

JavaScript
1
star
48

tencentcloud-client-php

tencentcloud client sdk for php used for tcb-manager-php
PHP
1
star
49

cloudbase-framework-doc

CloudBase Framework 文档子仓库
1
star
50

pai-mate-hello-example

Example app for deploy webapp with pai-mate
JavaScript
1
star
51

awesome-CloudBaseRun

云托管应用合集
1
star
52

hosting-book

腾讯云云开发网站托管使用手册
1
star
53

pai-mate-hello-example-go

for go
Go
1
star
54

cloudbase-kit-cms

TypeScript
1
star
55

cdn-pre-heater

基于云函数实现的微搭低代码低频访问应用的性能提升插件
JavaScript
1
star
56

cloudbase-album-demo

云开发相册小程序示例
JavaScript
1
star