本文写作时间 2021/02/24 , 仅代表目前时间点下的官方文档和实际使用体验。
和腾讯云利益无关,如有刊误,欢迎指正。
Firebase 是 Google 的一个把后端作为服务的云平台(BaaS) , 包含很多的功能:
可惜由于 Google 自身的问题,在中国用不了。
Cloudbase
是腾讯云开发的云原生一体化开发环境和工具平台。大体的功能和 Firebase
是类似的。
不过它找到了微信小程序这样一个本地化极佳的场景,而且依托对应的 IDE(微信开发者工具)形成了一套较为完善的工具链闭环。
这里不得不提到
uni-cloud
, 它的思路有一定的类似,和HBuilderX
这个 IDE 深度集成。 同时它作为一个第三方的平台,既能够和阿里云合作,又可以和腾讯云合作。
在某些场景,比如:用户
oauth
登录 这一块说不定能 2 头通吃 (毕竟 Cloudbase 不可能支持支付宝登录吧,笑~)
这两个实际上是一回事,只不过 微信云开发 是 Cloudbase 的一个定制化的场景罢了。
不过 微信云开发 的项目管理起来,不如 Cloudbase 云开发 便捷。
比如 :
@cloudbase/cli
就已经开始使用 cloudbaserc.json
来管理项目。微信云开发就不行,我在使用这个 cli 工具时是看不到小程序的环境的,只能看到 web 的环境。
微信云开发中,部署一个云函数,是把对应的整个目录,直接压缩上传并部署,并不会自动分析里面的依赖。
例如:我们想抽离公共代码到外部:
// cloudfunctions/hello-world
const { UserInfoProjection } = require('../base/model/index.js')
exports.main = async (event, context) => {
...
}
// 上传并部署
此时由于没有把外部 base
中的上传上去,所以云函数就报错了。
解决这个的思路当然很多:
其中 copy 的思路是我们自己开发的时候,把 common
部分的代码, 利用 copy-webpack-plugin
类似的玩意 ,打入每个云函数里。
这样也会带来一个很大的问题,比如 common
包依赖 dayjs
,lodash
这种极其常见的包,我们不得不在每个云函数的 package.json
, 加入对应的依赖,这显然很烦。
Cloudbase 这一块,并没有把 layer
对应的 api 放入 cli 去,但是 ui 上可以操作,同时加了一个 installDependency
的选项,在云端自己去安装 node_modules
。这个我猜腾讯云有自己的 npm 源,当然这个选项对于比较大的项目,需要提炼公共逻辑 / 组件,发布到私有 npm 的,实际上也是无能为力的。
cloudbaserc.json
的配置也是倍感亲切。
CloudBase Framework
这块,个人不是很理解它和 SCF 兼容的 Serverless Framework
之间的关系。个人感觉有点在重复造轮子,与之相比 Serverless Framework
的兼容性会更强些吧。
SCF 的云函数技术应该处于 Cloudbase 的上游。
SCF 已经上线的 nodejs 12.16
的支持,还有 保留并发实例 等功能。
Cloudbase 还没有,nodejs 最高版本也只有 10.15
。
云函数这一块,技术应该都源于 SCF , 流量灰度,发布版本这一块行为很类似,技术上应该 SCF > Cloudbase >= 微信云开发 。
Cloudbase
作为一个 Baas , 功能上融合了腾讯云大量的产品,发展前景很不错。
微信云开发作为 Cloudbase
的微信小程序场景,依靠独有的 cloudId
等大量与微信绑定
在小项目场景下也非常适用了。