那时候,我正在按着pwa官方教程,一步步的搭建天气预报应用,在ios桌面上添加了快捷图标,满怀憧憬的加入了web替代App的阵营。
大概也在这个时候,看到一位大佬在朋友圈分享了《App的未来,小程序》这篇文章。阅读了解后,一阵恶心,还是围绕web搭建,这不就是在抄袭我大pwa套路吗?被吹的天花乱坠的。
没过多久,小程序向个人开发者开放了,我也试着diy了一个,超多bug的开发工具,虽然很简单但又自成一派的框架。舆论热度逐渐冷却,我感受到的是小程序就是个鸡肋。

现在我辞职了,打算以独立开发者的身份继续生涯。严密的思绪了几天,我要开发微信小程序了。。自带用户体系流量的微信,让开发者欲罢不能。

微信小程序之最——云开发!
让微信小程序于与众不同的是什么呢?? 《小程序·云开发》!
由于经济能力有限,阿里云单核1G服务器显得不那么划算,就去注册了腾讯云,打算搭个node+mongodb做小程序后台,新用户有好多优惠券。突然进入眼帘的小程序云开发吸引了我,虽然配置很有限,但是免费!而且是小程序特供产品,绝对的契合小程序,似乎很满足我的需求。
重新下载安装了小程序开发工具,创建时多了快速云开发模版选项,创建后,按着官方文档一步步尝试了一回。
云开发的架构
有时候命运就是爱捉弄人,云开发的架构就是node + mongodb,免费又到位的精准服务,pwa是什么?

云开发提供了三大基础功能:云数据库,云存储,云函数。
什么是云函数?
数据库和存储好理解,那什么是云函数?
首先,项目多出了一个文件夹cloudfunctions,这个文件加就是拿来存放云函数代码文件的。
简单的讲,云函数就是在node里运行的一个写好的函数,在cloudfunctions里,一个文件夹就代表的一个函数,函数代码在本地写好后,右键文件夹同步,就可以在云开发后台部署一个函数了。
怎么调用云函数?
小程序全局加了wx.cloud对象,会有个wx.cloud.callFunction方法可以去调用,以我的理解,在callFunction被调用后,小程序会向云开发服务器发送api请求,通过请求的参数name来判断后台执行哪个函数,然后再把执行结果返回给前台。
就是说,云函数的代码,是node的代码。
云数据库
云开发的数据库是mongodb,因为api和mongodb如出一辙。
操作数据库有两种姿势:客户端和服务端。
和客户端的wx.cloud一样,运行在服务端的云函数也有cloud对象,而且api几乎是一样的,const db = cloud.database() 就可以得到操作数据库对象,然后一顿mongodb式的操作就行。
开发过程中,我对两种方式的理解是,要便捷用客户端式操作,要性能用服务端式操作,理由是客户端操作不用再去管理云函数,但比如要添加一条title不同的数据,要先get再post的操作,客户端需要两次的请求来完成,而云函数只需要一次请求。
云存储
云存储和数据库一样,同样也有客户端和服务端调用两种,但是使用的需求不同。客户端适合将手机上的图片,视频等资源上传到服务器,或者下载资源到手机上;而服务器端比较适合做在线处理资源文件等操作。
云开发优势
对于几乎不涉及到后台开发的小伙伴来说,直接就用上吧,理由很简单,你可以摆脱后台自己就完成一款小程序上线。
云开发有个最大的优势就是,原来后台需要阅读小程序用户机制文档绑定用户,现在,只要用云函数cloud.getWXContext()方法就可以获取到openid和unionid。
还有就是免费,而且控制测试环境和生产环境相当的便捷。
云开发不足
不提供自助升级配置,真的需要升级还得联系客户。也许还只是个灰度的阶段,后期就会上线自助的功能吧。
还有就是后台环境无法修改名称,对于对命名有强迫的开发者来说,多少会有些不畅快。