微信小程序开发平台新功能「云开发」快速上手体验

微信小程序开发平台刚刚开放了一个全新的功能:云开发。
简单地说就是将开发人员搭建微信小程序后端的成本再次降低,此文刚好在此产品公测时,来快速上手看看都有哪些方便开发者的功能更新。

微信小程序一直保持一个比较稳定的节奏进行功能的开放与更新,不激进但是又不怠慢,就一直像微信产品的节奏一样,而在生活中我们使用微信小程序的频率也慢慢高起来,如 KFC 自助点个餐、下单一些较冷门的商品等等。
而我给大家免费更新的「微信小程序开发视频教程」大纲也一直在修正与增加,从 40 集增加到 60 集,在云开发发布后,课程估计会更新到 80 集左右。各大平台加起来已近 20w 的播放量,需要的同学可以免费观看学习、指导。

1. 公测申请与开发工具更新

首先需要在云开发文档的页面中申请「云开发」的公测权限,我的是半天就收到邮件通知了。

然后需要下载 beta 版的开发工具,包含了云开发的功能模块。
微信小程序开发平台新功能「云开发」快速上手体验

2. 项目初始化

按照官方的说法,可以通过直接新建一个官方的演示 DEMO 项目学习查看,通过在新建项目时选择「建立云开发快速启动模版」。
微信小程序开发平台新功能「云开发」快速上手体验

新建后的项目结构如图左侧所示,较之前的项目结构,多了云端文件存储的本地映射。

3. 云开发的功能

官方的说明如下:

目前提供三大基础能力支持:
云函数:在云端运行的代码,微信私有协议天然鉴权,开发者只需编写自身业务逻辑代码
数据库:一个既可在小程序前端操作,也能在云函数中读写的 JSON 数据库
文件存储:在小程序前端直接上传/下载云端文件,在云开发控制台可视化管理

3.1 云函数

云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。
小程序内提供了专门用于云函数调用的 API。开发者可以在云函数内获取到每次调用的上下文(appid、openid 等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid)。
开放了运用 Node.js 等框架编写「后端」业务逻辑后,直接可以部署在云平台下,完全不需要去考虑域名、服务器、打包发布、运维等等琐事,大家体会一下这样的功能对于开发一些小型项目带来的便利以及实惠。

3.2 数据库

云开发提供了一个 JSON 数据库,顾名思义,数据库中的每条记录都是一个 JSON 格式的对象。一个数据库可以有多个集合(相当于关系型数据中的表),集合可看做一个 JSON 数组,数组中的每个对象就是一条记录,记录的格式是 JSON 对象。
这样的话,数据库的存储也不用考虑了,直接提供了一个类似于 NOSQL 一样的数据库,而且免费的存储空间达到了 1G,足够使用了。

3.3 文件存储

云开发提供了一块文件存储空间,提供了上传文件到云端、带权限管理的云端下载能力,开发者可以在小程序端和云函数端通过 API 使用云文件存储功能。
在小程序端可以分别调用 wx.cloud.uploadFile 和 wx.cloud.downloadFile 完成上传和下载云文件操作。
这不就是直接给你提供了一个静态文件的 CDN 嘛,还是腾讯直接提供的,免费的容量直接达到了 5G,我想小型项目前期一般是用不完的。

4. 云开发控制台

如下图所示,在开发工具的工具栏直接可以调起独立的云开发控制台,图形化管理起来也非常地方便。
微信小程序开发平台新功能「云开发」快速上手体验

5. 功能上手测试

我们就以官方的 DEMO 来看一下云函数的执行过程。
微信小程序开发平台新功能「云开发」快速上手体验

上图就是云端定义的逻辑,上面的「后端」加引号就是因为在这里还可以直接调用一些小程序的 API,不用自己处理一些额外的逻辑,如之前后端在不同的语言框架下,实现获取 openid 的方法就完全不一样。

定义好了云函数后,右键可以上传发布,发布后就可以直接在前台调用了。

微信小程序开发平台新功能「云开发」快速上手体验

开发起来真是无缝衔接,丝般顺滑。

6. 结语

按照官方建立的 DEMO 模板项目就有很多演示学习的代码,大家感兴趣可以直接去初始化项目后学习,这里就不再多贴代码说明。
至于此功能发布后对于小程序开发环境的推动,大家可以自己思考一下。我觉得这才是对于很多孵化项目的开发者最有推动力的官方大招了,省却了域名备案、数据库运维、服务器运维、后端开发、打包发布等等工作,一个小程序开发账号下还可以建立两个这样的云端后台,不管是从运行效率、空间容量等方面,应该没有比官方能优化的更好的第三方解决方案了。
我们的 DevOpenClub 社群中也开始孵化了一些微信小程序方面的项目,感兴趣的朋友可以在那里找到志同道合的朋友,利用闲暇的时间来实现一些自己的想法了,开发的成本已经非常非常低了。

上一篇:Codeforces Round #303 (Div. 2) A. Toy Cars 水题


下一篇:「日常训练」Skills(Codeforce Round #339 Div.2 D)