本文写作时间 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
等大量与微信绑定
在小项目场景下也非常适用了。