# 云开发 CloudBase 使用指南

# 一、小程序·云开发和腾讯云·云开发的区别

# 1.云开发 CloudBase

云开发 CloudBase 是概念,它描述了整个生态所有的能力,从平台性角度描述了能力和功能,以及产品矩阵。

云开发 CloudBase 概念下面有「微信·云开发」和「腾讯云·云开发」两种实例产品

# 2.微信·云开发

「微信·云开发」(之前为小程序·云开发)是联合微信团队打造的,在微信生态上有出色的云原生体现,比如云调用、微信支付、微信侧免鉴权获取信息等等,都是微信侧加持的表现。

「微信·云开发」的标志就是从开发者工具控制台依附于一个小程序下进行创建,在创建时,会以微信公众号(小程序也是公众号的一种)的方式注册一个腾讯云账号(也可以在创建时选择已有腾讯云账号绑定,就不会创建新的账号)。

开发者可以通过 微信授权 (opens new window) 的形式进入到腾讯云官网控制台,在腾讯云云开发控制台,你仍然可以操作云开发环境。

云开发推出的一些新能力,会直观的体现在腾讯云官网控制台。有些能力(比如云函数 HTTP 访问服务)需要经过微信侧团队加持和评估后,才能够在开发者工具控制台中体现。

所以并不是「微信·云开发」没有某些能力,而是控制台中不体现而已。由此可以得出,「微信·云开发」仍然可以做 WEB 等多端开发的事情,而且在微信生态上更胜一筹

# 3.腾讯云·云开发

「腾讯云·云开发」是独立性实例产品,不需要拥有微信小程序就可以直接在腾讯云官网控制台创建的,也是云开发 CloudBase 能力最先应用的环境。

一般我们说云开发支持一些能力,基本上都是说的「腾讯云·云开发」(小程序·云开发具体显性支持还需要和微信侧团队评审打通)

「腾讯云·云开发」还在多端支持上有出色的优势,目前和其他小程序做的免鉴权打通都是从腾讯云·云开发侧出发的。比如 QQ 小程序,只支持腾讯云·云开发,不支持微信·云开发。

所以当你不太依赖微信生态,做多端应用时,建议使用「腾讯云·云开发」。

目前,我们和多个框架展开合作,从框架侧开通的云开发环境均属于「腾讯云·云开发」。

# 二、云开发 SDK 及能力相关

# 1、 微信·云开发开发微信小程序

如果你使用的是微信·云开发,开发微信小程序! 推荐小程序端使用 wx.cloud 、云函数端使用 wx-server-sdk 文档均在 微信官方文档 (opens new window)

# 2、腾讯云·云开发开发微信小程序

如果你想使用「腾讯云·云开发」,开发微信小程序。有两种可选方式:

  1. 你的「腾讯云·云开发」环境所属腾讯云账号绑定了目标小程序。可以直接在腾讯云控制台进行环境转换,具体参见 文档 (opens new window) ,转换后你可以在小程序中直接使用 wx.cloud 的形式来使用该环境,但是你无法在小程序开发者工具的云开发控制台中管理。
  2. 你的「腾讯云·云开发」环境所属腾讯云账号没有绑定目标小程序,建议如下使用:小程序端使用 JS-SDK (opens new window) ,此 SDK 已经集成微信小程序适配器支持,可直接使用,需要配置移动安全来源(应用标识应填写小程序 appid ),使用代码如下:

注意

不使用微信侧 SDK ,就意味着自己放弃微信免鉴权的加持,需要独自搭设 openid 系统程序,除非你做多端应用开发,否则不建议这么做。

云函数端使用 Node-SDK (opens new window) ,直接使用即可,不需要加 key 密钥等信息。

# 3、腾讯云·云开发开发 QQ 小程序

小程序端使用 qq.cloud (opens new window) ,和微信小程序使用体验一致。

云函数端使用 qq-server-sdk (opens new window) ,和微信使用体验一致,具体差异看文档描述。

在开发 QQ 小程序时,有一个绑定腾讯云账号的过程,在这里就是绑定的腾讯云侧云开发环境,即使你绑定的腾讯云账号中包含「微信·云开发」环境,也不支持 QQ 小程序开发。

也就是说,QQ 小程序只支持「腾讯云·云开发」环境。但如果一个「腾讯云·云开发」环境已经转换过支持微信小程序,则这个环境可以同时支持两个小程序端,非常适合跨端支持的应用。

# 4、微信·云开发开发公众号网页

微信·云开发可使用环境共享能力将环境共享给公众号使用,具体表现就是公众号网页可以原生登录,并且云函数可以免鉴权调用公众号服务端能力。

环境共享具体可以参照 官方文档 (opens new window) ,公众号网页登录的官方示例 在此 (opens new window) ,还需要编写云函数  cloudbase_auth 。

有一个 简单的 DEMO (opens new window) ,可以帮助大家快速上手。在 DEMO 中有封装好的登录模块,大家可以根据自己的需要修改使用。

小程序·云开发原生支持的公众号只限于有 网页授权 (opens new window) 能力的公众号,目前只有已认证的服务号才可以,其他的公众号目前暂不支持,共享环境也没有什么实质的用处。

另外,非个人主体的小程序·云开发静态网站托管,可以无需 config 直接打开任意小程序,具体实现文档参照 官方示例 (opens new window)

最后,可以用「微信·云开发」来做公众号接收消息,被动回复消息,还有模版消息发送的能力,具体使用参见 微信官方文档 (opens new window)

如果你想要自己实现公众号消息和模版发送能力,可以参照 云开发支持公众号示例 DEMO (opens new window)

# 5、所有的云开发开发普通 WEB 以及 APP 应用

不管是「腾讯云·云开发」还是「微信·云开发」,都支持普通 WEB 和其他应用的开发。

WEB 开发或者是以 JS 为基础的应用开发,基本上就使用 JS-SDK (opens new window) ,有特殊的语言和框架需求的,可以直接在 SDK 中心 (opens new window)里找一找,SDK 中心找不到,可以直接使用 openapi (opens new window) 自己搭建。

云函数端基本上使用 Node-SDK (opens new window) ,如果有一些更高级的需求,比如批量管理什么的,就使用 manage-sdk (opens new window) ,还是缺少直接发送需求到 Cloudbase@tencent.com ,我们会及时评估。

欢迎各位贡献 SDK ,如果有 SDK 贡献,可以发送 SDK 的 github 仓库链接和相关描述信息到 Cloudbase@tencent.com ,我们在审核之后给予收录,并将你纳入布道师体系换算积分。

# 三、云开发计费有关说明

在小程序控制台中,会看到有腾讯云扣费和微信侧扣费两种,而腾讯云扣费又分为包年包月和按量计费。

在这里,腾讯云扣费指的就是通过微信授权登录到腾讯云官网里,从腾讯云侧余额中做扣费。而微信侧扣费只是通过微信支付扫码来进行扣费。

另外,按量计费必须是腾讯云扣费,虽然每个小程序下有两个免费额度,但是如果超过额度,则需要前往腾讯云官网充值保证余额充足,否则就可能停服。

你可以通过在自己的主腾讯云账号个人信息中绑定微信公众平台(小程序侧腾讯云账号),则可以使用主腾讯云账号余额。

# 四、关于云开发相关问题

# (1)只要是「微信·云开发」环境就可以使用云调用吗?

微信云函数中使用云调用必须满足三个使用条件:

  1. 「微信·云开发」环境或转换后的「腾讯云·云开发」环境的云函数
  2. 云函数使用 wx-server-sdk (其他的不支持)
  3. 部分云调用接口必须有真实用户调用(比如小程序码)

微信云托管中使用云调用满足一个使用条件:

  1. 「微信·云托管」所属环境属于或被共享于目标小程序

从严格意义来说,云托管的云调用,其实是为服务端调用提供了令牌,此令牌无需开发者管理;所以开发者可以直接正常调用服务端接口,或者使用云托管官方提供的封装服务。

# (2)云托管品牌升级为微信云托管,和云开发有什么区别和联系?

之前「微信·云开发」内的云托管和「微信·云托管」的区别除了品牌升级外,还做了独立的控制台,原有的容器引擎升级为完整的后端项目托管解决方案。从代码管理到 CI/CD 流水线部署发布,提供全链路、低成本、企业级的云原生解决方案,功能更强大、体验更友好。

以上总结一下,目前来看「微信·云开发」和「微信·云托管」都是微信联合腾讯云打造的「微信云服务」生态的组成部分,都提供了免服务器免运维的能力,而云开发主要是面向前后端一体化架构的场景,更适合个人开发者全栈开发;云托管主要是面向前后端分离架构的场景,不限语言不限框架,对团队协作和企业级应用场景更友好,两者也可以组合进行使用。

这里给一些 DEMO 入门示例项目,供大家学习:

# (3)小程序·云开发有关于微信支付的例子吗?

请参考微信支付演示DEMO (opens new window)

云开发还提供了 分账服务 (opens new window) ,如果有需要可以填写申请。

# 五、更新说明

  • 更新时间:2021 年 7 月 7 日
  • 更新描述:根据云开发形态发展会不定期更新
  • 以上内容仍然找不到解决方案的,推荐去社区提问:
  • 关注「腾讯云云开发」公众号,回复关键词「加群」,加入各个产品能力官方交流群