前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >sdk 设计中那些比较优雅的思路

sdk 设计中那些比较优雅的思路

作者头像
不换
发布2024-09-11 18:43:59
发布2024-09-11 18:43:59
9100
代码可运行
举报
运行总次数:0
代码可运行

sdk 设计中那些比较优雅的思路

首先介绍下一个现代化的 SDK 应该具备什么能力:

  • 同步加载/异步加载
  • 补偿机制
  • API 降级
  • ...

当然可能有很多,咱们只列举几个核心的内容。

这里咱们拿字节跳动旗下的 火山 Finder 为案例:

代码语言:javascript
代码运行次数:0
复制

<script>
// 此段代码的作用是将SDK主文件未加载完成时,业务代码中调用的API依次进行放到数组q中缓存,等待SDK主文件加载完成后,再取出,并执行。
(function(win, export_obj) {
    win['LogAnalyticsObject'] = export_obj;
    if (!win[export_obj]) {
        var _collect = function() {
            _collect.q.push(arguments);
        }
        _collect.q = _collect.q || [];
        win[export_obj] = _collect;
    }
    win[export_obj].l = +new Date();
})(window, 'collectEvent');
</script>
<script async src="https://lf3-data.volccdn.com/obj/data-static/log-sdk/collect/5.0/collect-rangers-v5.1.12.js"></script>

模拟执行下浏览器的运行:

在内部的 SDK 还没有加载完成时,咱们做了参数以及内部方法的收集。

等待 SDK 加载完成后再做内部事件的时序执行,以及 事件拆分

  • 这里的事件拆分大概指的是,不在内置范围的事件名都算是上报事件。

以上便是 SDK 设计中相对比较巧妙的一种设计思路了,希望对你有帮助~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 不换的随想乐园 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • sdk 设计中那些比较优雅的思路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档