【从零开始集成低代码平台】应用消息订阅发布架构

开源地址: https://github.com/zmkwjx/baikbingo-cat
安装地址:https://www.npmjs.com/package/@baikbingo/cat-core

摘要

低代码中,有一个重要的组成部分就是各模块、各组件之间的通信。要完成不同类型、独立开发的组件之间的交互,势必需要一个沟通枢纽,在以往的一些项目中,触发方式过于死板,或者耦合性过强,导致代码中的逻辑越来越复杂,后期开发难度大。订阅转发模式以订阅主题转发消息,脱离了组件制定的强关联模式,使得消息传递低耦合进行。以一个制定的主题进行,甚至可以在配置项时自定义主题,在需要的地方配置监听方法即可完成传递。

baikbingo-cat 简介

baikbingo是组织名称,意在让所有人都参与、把开发当游戏一样进行。取名为Cat(猫),是来源于制解调器的谐音(光猫),其次是应为猫是一种身手敏捷的动物,作者也希望该baikbingo-cat【下面简称Cat】架构作为一种基础模式在未来有着更加强大的拓展。

安装使用

安装

npm i @baikbingo/cat-core -S

使用

import { useCatCore } from '@baikbingo/cat-core'
const client = useCatCore()
// 作为生产者:发送消息
client.send('theme', 'this is baikbingo cat!')
// 也可以发送多个主题
client.send('otherTheme', 'this is baikbingo cat!')
// 作为消费者:接收消息
client.receive('theme', msg => {
  console.log('this is theme receive message: ', msg.data)
})
// 也可以接收多个主题
client.receive('otherTheme', msg => {
  console.log('this is otherTheme receive message: ', msg.data)
})

更多可以去github克隆一下代码执行yarn dev即可看到一个示例demo

核心思维

其实订阅发布是一个很成熟的方案了,一般应用在中台与后台的沟通中,或者新闻、博客文章发布机制等。针对日益发展的前端来说,专门处理订阅发布消息的还不多,当然你也可以通过vuex、redux之类的全局状态管理插件来处理,但是本文是针对单纯消息机制来设定的,重点不一样。cat更注重消息的转发,客户端既可以作为生产者也可以作为消费者,通过一个主题进行消息通信,服务端只对该主题进行维护和转发即可,不去关心客户端的行为,包括具体的一些核心存储也交由内置的仓库进行管理,以来达到完全解耦的目的。

数据仓库

数据仓库作为单例,仅仅在当前项目中存在一个,它将存储所有的基础数据:服务器信息、客户端列表、消息任务栈。初始化数据仓库时,将新建一个服务端并注册到仓库中。数据仓库不直接处理消息和数据,但是在整个订阅发布架构中起着至关重要的作用。
请添加图片描述

任务调度

当新建客户端时,会默认生成一个uuid,并将客户端信息注册到数据仓库。客户端作为生产者时,每次发送消息都会带上一个theme作为消息通道(KEY值),发送的消息将添加到数据仓库中,记录至任务清单的末尾,并通知服务器开始调度任务。

请添加图片描述

预览

代码已经在github上开源,有兴趣的小伙伴可以看看源码,提提意见。

git clone https://github.com/zmkwjx/baikbingo-cat.git
cd baikbingo-cat
yarn 
yarn dev
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小树ZW

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值