Skip to main content

SDK 自动加载

问题描述

在使用文档能力时,页面需要加载 sdk.js。 由于 SDK 会随着产品版本持续更新,如果通过人工下载并替换 SDK 文件的方式维护,会带来以下问题:

  • ❌ SDK 更新依赖人工操作
  • ❌ 多环境 SDK 版本容易不一致
  • ❌ 前端直接访问 SDK 存在跨域限制
  • ❌ 升级维护成本高

因此,需要一种无需人工干预的 SDK 自动加载方案。


解决方案

采用 Server 代理加载 的方式:前端请求自有 Server 的 SDK 接口,Server 从 FilezOffice 服务动态获取最新 SDK 并返回给前端,前端无需感知 SDK 版本变化。

SDK 代理加载流程

具体流程:

  1. 前端请求自有 Server 的 /sdk/sdk.js
  2. Server 调用 http://xxx/docs/version 获取最新版本号 clientTimeStamp
  3. Server 根据版本号拼接实际地址 http://xxx/docs/static/${clientTimeStamp}/sdk.js,请求 SDK 文件
  4. Server 将 SDK 内容返回给前端

Server 仅作为代理层,不需要将 SDK 文件保存到本地。


版本接口说明

FilezOffice 服务提供版本信息接口:

http://xxx/docs/version

返回示例:

{
"clientTimeStamp": "20231227185652"
}

clientTimeStamp 即为当前 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 版本,始终加载自有 Server 的统一地址即可:

<script src="/sdk/sdk.js"></script>

方案特点

  • ✅ 无需人工更新 SDK,始终加载最新版本
  • ✅ 前端通过自有 Server 加载,无浏览器跨域问题
  • ✅ 多环境统一 SDK 入口,维护成本低

注意事项

  • Server 每次请求都会访问 FilezOffice 服务,依赖网络稳定性
  • 建议对 SDK 内容增加缓存以提升性能
  • 若访问量较大,可升级为 Server 端缓存方案