另一方面,当小程序需要使用 npm 形式的更复杂的 SDK 时,由于小程序的 npm 包需要单独构建,因此在编译时无法按需打包,同样会遇到大尺寸 。
在我们的实际业务场景中存在这样的问题。腾讯课堂作为在线教育业务,拥有直播互动的核心能力,即用户在线上课时聊天、举手、连麦、抽奖等。互动的形式。
为了让这个核心能力能够实现跨端跨业务复用,我们团队开发了直播交互SDK,对外抛出一个简单的API,内部设计了接口层、适配层、通道层、策略层结构非常清晰,使用起来非常方便。初始化后,只需要监听或请求相应的命令字即可进行开发。
需要关心内部的转换,可以利用ts的类型推断能力直接获取channel返回的数据类型。 .
但是我们在小程序端连接的时候,遇到了几个问题:
SDK为了支持跨终端和跨服务,所有功能都内置了逻辑,在小程序端使用会造成大量包体积的浪费
专为网页设计,不兼容小程序;单独维护一个小程序的版本成本比较高
不同项目和业务的SDK迭代会导致版本管理混乱
要解决以上这些问题,就必须升级SDK。
我们的改造方案是进行插件化处理,提取接入层(业务层)和适配层作为SDK的核心,添加pluginAdaptor对插件进行适配和管理,整合策略层和渠道。对连接层的逻辑进行抽象,制定相应的规范,根据抽象类和业务需求实现相应的策略插件和通道插件。
业务转型非常简单。只需要在初始化前注册当前场景和功能所需的插件即可。后续使用和之前完全一样,业务的改造成本非常低。
相关推荐