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

2024-09-11 18:43:59 浏览数 (3)

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

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

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

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

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

代码语言:javascript复制

<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 设计中相对比较巧妙的一种设计思路了,希望对你有帮助~

0 人点赞