# 跨端 JS SDK

微信云托管团队提供了Web SDK,支持在 Web 中访问云托管资源。 但 Web SDK 只支持常规 Web 应用(即浏览器环境)的开发,不兼容其他类 Web 平台。由于类 Web 平台在网络络请求、本地存储等特性上与浏览器环境有明显差异,现提供 @wxcloud/cloud-sdk 以支持跨端适配的能力。在传入不同平台适配对象之后,在其他类 Web 平台也可以 callContainer 的形式访问微信云托管资源。

# 目的

目前市面上大部分的轻应用、小程序包括移动应用 APP 都是采用 JS 来作为开发语言的,所以我们可以对 websdk 进行轻微改造,就可以轻松使用在各种平台中。

但是单独改造 SDK 包会有些许风险,比如在原 SDK 包升级时需要重新构造,就造成了无穷无尽的麻烦,改造成本相当大。

基于这个问题,我们提供一套完整的适配扩展方案,遵循此方案规范可开发对应平台的适配器,然后搭配 @wxcloud/cloud-sdk 和适配器实现平台的兼容性。

不了解的小伙伴肯定会有些茫然,我来用浅显的语言解释一下,就是@wxcloud/cloud-sdk 将底层的网络请求以及相关基础需求以接口的形式暴露出来,我们按照平台的特殊 API 来补充这些接口,sdk就可以根据这些补充的接口,无障碍的运行在平台中了。

# 安装

npm install @wxcloud/cloud-sdk --save

# 使用

@wxcloud/cloud-sdk 导出了 useAdapterinitCloud 方法。先通过 useAdapter 传入跨端的适配对象,然后调用 initCloud 获取 cloud 对象,即引入 Web SDK 时自动挂载在 window 下的 cloud 。

const { useAdapter, initCloud } = require('@wxcloud/cloud-sdk')
import { adapters } from './example/adapters'

// platform 可传入标识平台的字符
useAdapter({ adapters, platform: 'platform' })
const cloud = initCloud()

在浏览器环境中使用可以不调用 useAdapter。

const { initCloud } = require('@wxcloud/cloud-sdk')

const cloud = initCloud()

具体使用以及适配器需要实现的细节,请移步npm文档

我们已经实现了 uni-app 的适配器,可以参考此项目

# 注意事项

  1. downloadFile、uploadFile 暂不支持适配。
  2. 公众号登录相关的 api 在微信客户端之外调用无法正常完成相应逻辑。
  3. 对于 @wxcloud/cloud-sdk 的问题,欢迎在微信开放社区发帖提问。