立即咨询

电话咨询

微信咨询

立即试用
商务合作

实践 | 如何在腾讯云微搭低代码中接入神策数据

2022-05-25

在我们使用腾讯云微搭低代码(下文简述“微搭”)开发小程序的时候收到一个接入神策数据的需求,在我们查看文档后发现将神策接入小程序是需要全局引入 sensorsdata.min.js 并初始化神策 SDK 后才可实现埋点方法的接入。

 

腾讯云微搭是类似 react component 的组件化思维,将页面中各个不同的元素都细分成了多个不同的组件,这就意味着不同的组件如果要使用同一个神策 SDK 实例的话需要想办法挂载到全局。

 

在微搭的整个生命周期中存在一个 app 对象,我们尝试在 A 组件中初始化神策 SDK 并赋值给 app.sensorsDataSDK 后,在 B 组件中使用时偶尔会出现由于加载顺序问题导致 A 初始化神策的方法还没执行时 B 组件就开始调用了、从而发生报错导致无法使用。

 

那么问题来了,我们如果每个页面和组件都单独接入神策 SDK 文件的话无疑会增大小程序体积、且降低 SDK 配置的可维护性。

 

我们应当如何实现全局接入同一个初始化后神策 SDK 实例呢?

 

下面我就来介绍一下我的办法。

 

01 

解决思路

 

登录微搭低代码控制台:

https://console.cloud.tencent.com/lowcode

进入微搭的应用开发可视化编辑器,在编辑器左上角中可以找到【低代码编辑器】,在打开的低代码编辑器中可以设置全局的 lifecycle 内容,也就是全局生命周期。

 

 

这个文件的内容会在项目启动时加载,从而分别执行不同生命周期的方法。

 

但是此处不允许引入本地文件、那么我们就无法在此处使用神策提供的 sensorsdata.min.js 文件初始化神策 SDK 挂载给 app 对象了。并且由于此文件过大、整个源文件粘贴进来也不是个好办法。

 

纵观全局,只有组件可以引入本地文件,但组件又因为加载顺序的问题导致多个组件之间不能使用同一个神策 SDK 实例。只有全局 lifecycle 可以优先声明全局可用的内容,但又不能引入文件。

 

我的思路是:在全局 lifecycle 写一个异步方法用于获取 app 上的神策实例、在未拿到神策 SDK 实例之前都先不返回结果,然后神策 SDK 通过一个组件将实例挂载至 app 对象上面。这样其他的组件就都可以使用全局 lifecycle 中写的方法去获取神策 SDK,并且因为此方法在未得到实例之前都不会返回内容、所以不会遇到加载顺序问题导致报错。

 

02

解决方案

 

1、创建神策组件库,用于引入 sensorsdata.min.js 并初始化神策 SDK

 

 

 

2、关联组件库

在本地找一个文件夹执行 tcb lowcode create <组件库标识>

比如根据我前面新建组件库时的设置,我的命令就是 tcb lowcode create sensors

 

 

打开文件夹可以发现默认有 Button 组件和 showToast 动作,我们可以以此为样本进行修改、分别编写“神策 SDK”组件和“神策埋点”动作。

 

3、修改全局 lifecycle 实现延迟获取组件的方法

在所有生命周期代码的前面,加入图中的代码。此处为了防止其他组件一直等待神策 SDK 实例化,特地设计了一个延迟机制,超时后此方法会返回 null。

 

 

4、开发“神策 SDK”组件

将 configs/button.json 修改为 configs/sensors.json,并将其内容修改为神策 SDK 的描述信息。

 

 

将 mp/components/button 修改为 mp/components/sensors,在其中 index.js 中引入 sensorsdata.min.js 后初始化神策 SDK,并将初始化后的实例赋值给 app 对象里对应的字段。

 

 

 

6、发布组件库

进入到组件文件夹中执行 tcb lowcode publish。

 

03

使用方法

 

1、页面埋点

把“神策 SDK”组件拖放到需要接入神策 SDK 的页面,即可自动统计页面信息及各个生命周期的触发信息。

 

 

2、行为埋点

在需要埋点的元素添加对应的事件,选择前面创建的神策埋点动作即可自动触发,比如下方在某个元素触发 change 事件时执行埋点方法。

 

3、在其他组件中埋点

因为我们在全局 lifecycle 中基于 app 对象实现了 getSensorsDataSDK() 方法,因此我们在其他组件中也可以直接调用此方法,如下介绍两种调用方法。

a)Promise 风格调用方法

b)普通 await 调用方法

 

 

4、埋点调试

在小程序打开调试模式的时候,可以在 vConsole 中看到埋点方法被触发时的日志。

 

 

 

04

注意事项

 

  1. 在使用埋点方法前,务必留意页面中是否已放入“神策 SDK”组件。可以在有埋点的页面中查看微搭编辑器的“大纲树”确认此组件是否有放入。

 

 

 

2、在小程序其他组件使用时,需要先通过 getApp() 方法获取全局 app 对象。

 

05

总结

 

本文以接入神策 SDK 的角度讲述目前可以在微搭中实现挂载全局实例的方法,其他的跨组件全局实例也同样可以使用本文中提到的办法实现。

如果有更好的解决办法,也希望大家可以多多讨论,集思广益。

更多产品了解

欢迎扫码加入云巴巴企业数字化交流服务群

产品交流、问题咨询、专业测评

都在这里!

 

热门数字化产品

堆雪球 SCRM私域运营管理系统堆雪球科技有限公司,是一家专注微信生态,帮助客户进行风控管理、销售提效、私域运营、自动化营销,致力于让企业营销高效可控,过程更聪明。 堆雪球目前旗下拥有: 客户营销解决方案、私域营销系统、线索导流方案、上下游配套资源。
Zoho Projects项目管理软件Zoho Projects项目管理软件,帮助您轻松地进行项目规划、进度跟踪、内外协作。它利用工时统计、Bug管理、项目知识库管理等功能,帮助您实现业务目标。为您的项目管理工作提供全面综合的解决方案,从而帮助您和您的企业大幅创造价值。
携客云采购管理系统SRM携客云的每个应用功能都经过用户的千锤百炼,无论是大型的集团,或是快速成长的企业,都能够为您企业供应链每个管理环节,找到最佳的业务管理方案,并配置您所需要的管理流程和业务细节。
Udesk 智能质检系统Udesk智能质检系统使用ASR语音识别技术、语义判定及规则匹配打造智能质检引擎,智能分析通话内容,挖掘对话中服务问题与商机.实现对客服工作的完全质检,充分把控客服通话质量,提高工作效率,降低运营风险和成本。
法大大电子合同SaaS平台法大大电子合同法律效力等同于纸质合同,保障用户权益。人脸生物科技识别、银行卡要素等多重技术手段实名认证,确保颁发电子签名为本人专有。向企业和个人提供全流程的电子合同服务,完善的产品与服务体系。
为你推荐
2025腾讯产业合作伙伴大会|云巴巴荣获双项大奖,载誉而归

1月16日,2025腾讯产业合作伙伴大会在三亚召开。云巴巴,荣膺“2024腾讯云卓越合作伙伴奖—星云奖”和“2024腾讯云AI产品突出贡献奖”双项大奖

2025-01-17
电子签工具选型指南:契约锁、法大大、e签宝三大厂商对比

电子签工具选型指南:契约锁、法大大、e签宝三大厂商对比

2025-06-23
上上签 vs 君子签哪个好?功能细节与用户体验深度对比

上上签与君子签作为电子签市场的热门选手,它们究竟哪个更好呢?云巴巴将从多个角度为大家进行深度对比,助力企业和个人做出明智的决策。

2025-06-23
法大大电子签 vs 契约锁:哪款更适合中小企业?

对于中小企业来说,选择一款合适的电子签名平台,更是关乎业务拓展与成本控制的关键一步。今天,就来深入探讨一下法大大电子签与契约锁,看看哪款能成为中小企业的得力助手。

2025-06-23
实力认可!云巴巴斩获2025腾讯云全域增长“涨粉狂人奖”

5月,由腾讯云举办的 “2025 腾讯云全域增长实战营” 在线上开课。而云巴巴在此次实战营中,凭借卓越的实力和出色的表现,一举斩获 “涨粉狂人奖”,荣耀时刻,备受瞩目。

2025-06-20
查看更多