SDK 自动加载
问题描述
在使用文档能力时,页面需要加载 sdk.js。
由于 SDK 会随着产品版本持续更新,如果通过人工下载并替换 SDK 文件的方式维护,会带来以下问题:
- ❌ SDK 更新依赖人工操作
- ❌ 多环境 SDK 版本容易不一致
- ❌ 前端直接访问 SDK 存在跨域限制
- ❌ 升级维护成本高
因此,需要一种无需人工干预的 SDK 自动加载方案。
解决方案
采用 Server 代理加载(Proxy Mode) 的方式。
核心思路:
- 前端始终请求自己的 Server 获取 SDK
- Server 动态获取最新 SDK 并返回
- 前端无需感知 SDK 版本变化
整体访问链路:
前端 → 自有 Server → SDK 服务
Server 仅作为代理层,不需要将 SDK 文件保存到本地。
方案原理
SDK 服务提供版本信息接口:
返回示例:
{
"clientTimeStamp": "20231227185652"
}
其中 clientTimeStamp 表示当前 SDK 版本。
Server 在收到 SDK 请求时:
- 获取最新
clientTimeStamp - 拼接 SDK 实际访问地址
- 请求远程 SDK
- 将 SDK 内容直接返回给前端
SDK 地址规则:
http://xxx/docs/static/${clientTimeStamp}/sdk.js
http://xxx/docs/static/${clientTimeStamp}/sdk.esm.js
http://xxx/docs/static/${clientTimeStamp}/sdk.cjs.js
前端使用方式
前端无需关心 SDK 版本,只需加载统一地址:
<script src="/sdk/sdk.js"></script>
前端始终访问自己的 Server,不直接访问 SDK 源站。
方案特点
- ✅ 无需人工更新 SDK
- ✅ 无浏览器跨域问题
- ✅ 始终加载最新 SDK
注意事项
- Server 每次请求都会访问 SDK 服务,依赖网络稳定性
- 建议为
/sdk/sdk.js增加缓存提升性能 - 若访问量较大,可升级为 Server 缓存方案
适用场景
- 不希望手动维护 SDk
- 多环境统一 SDK 入口