微信小程序云开发 简介
官方文档https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/
正常实现一个应用,非静态:需要后端API、服务器、数据库支持。
对资源和技术有要求,开发成本巨大。
而微信小程序云开发,
技术要求:只要你会写js,全搞定;
资源要求:目前小程序云开发全免费。
轻松两天0成本完成一个小程序。(二维码见文章末尾)
这不是一篇gettingStarted文,想要直接上手,参考官方https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html
我第一次做的时候,之前也没有任何小程序开发经验,直接上手,2天完成一个有三个页面的小程序。
分四部分介绍:小程序端、服务端、数据库、存储
小程序端
小程序端相当于客户端,对于前端开发而言,客户端无需多说,与React、Vue、Angular类似;
区别在于,小程序与H5相比,更像一个app。或者说本质就是native app的一部分;因此它可以调用非浏览器可调用的硬件资源。
当然,受限于微信小程序提供的方法。参考官方文档。
以下是小程序·云开发独有的
服务端
官方称:云函数
Nodejs(JavaScript全搞定)
环境:自动分配两个环境,对应数据库也是两个环境
部署:小程序开发工具,右键点击上传并部署(一键部署)
监控:云开发控制台提供实时、指定时间内的调用次数、运行时间、错误相关监控;
日志:云开发控制台提供request、response、和console出来的日志
自测:云开发控制台,类似于postman,却不用输入url,直接输入参数运行
一定要理解云函数是服务端代码。
刚开始我没理解这一点,以为就是一个Function,而小程序端也可以调数据库,导致我完全没用远程函数,全部代码实现都在小程序端,包括读取数据库,恩,蛮奇怪的。
除了奇怪,还有以下区别:
1.性能:
这个问题待确认,有在问官方大大,不了解云开发的设计机制。按理说,数据库也是在服务器上,服务端也是在服务器上,服务端调服务端,肯定比客户端调服务端性能更好。
2.发布:
这应该是客户端和服务端最大的区别,客户端分散在每个用户手里,而服务端只有一个,在开发者手里。所以服务端发布,全由开发者说了算,随时随地。客户端却没有那样的实时性。
在浏览器端,有缓存限制,虽然js都发布了,客户端没有刷新页面,或者浏览器缓存等原因限制,依然还是老版本的代码。但相对于native app而言,已经算是更新及时的了。
在APP端,有应用审核等限制,以及需要用户主动发起更新。
而小程序,介于APP和H5,有审核限制,但是不需用户主动发起更新。
3.http/https请求转发:
小程序端发起https请求,有限制。参考https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html
服务端发起https请求,无限制。跳过域名校验,不占小程序开发服务器域名。
4.天然鉴权:
云端运行的代码,微信私有协议天然鉴权,开发者只需编写自身业务逻辑代码。
始终自带用户信息,登录态和鉴权都搞定。省掉一天功夫……
5.支持async await
远程函数自动支持async await。
小程序端如果需要用async await,则需要引入https://github.com/facebook/regenerator/tree/master/packages/regenerator-runtime
6.NPM 支持
远程函数支持npm,据说小程序端的npm安装使用第三方库很麻烦
7.runtime Node
以上有好几点都是基于runtime是node,所以跟小程序端有不同。
但除此,做过node开发的童鞋就知道,同样一句js,在node上和在客户端得到的结果可能是不一样的。所以对前端开发而言,要记住并不完全是JavaScript,runtime不同。
就我踩的坑,new Date()就是一个。
8.其他
服务端和客户端的区别肯定还有很多,暂时只能想到这些。
列出这些区别也是希望大家好好用到远程函数,因为对前端来讲,更熟悉的肯定是客户端,会更倾向于使用客户端API吧。
数据库
MongoDB(JavaScript全搞定,JSON)
1.部署
无需,直接上手,环境对应远程函数环境
2.管理
可视化管理,云开发控制台
增删改查、导入导出、索引、权限,可视化操作。
3.CRUD API
应该是封装了MongoDB的方法,所以有限制,依赖官方提供的API。
之前连模糊匹配都无法实现,现在提供正则方式实现模糊匹配。
4.小程序端和远程函数均可以读取数据库
我也不理解,既然有远程函数,为何还让小程序端可调用数据库。
5. 支持promise、callback两种方式
tips:
注意集合权限,权限会影响增删改查操作,对小程序端和服务端也不同。
存储
云端存储,可视化管理
tips:
出于安全性考虑,开发者不可能知道存储的相对路径,每次要通过ID获取临时路径然后拿到存储的文件。不过image等组件支持云文件ID
缺点
- 1.严重依赖官方API,现在官方API还不完善,改bug更是没有那么及时,使用者都是小白鼠。尽量不要商用
- 2.免费资源,有资源使用配额。虽然目前可申请更高配额,商用依旧不推荐。(https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference/quota.html)
- 3.性能,就目前使用看来,性能是个大问题,我已经尽我所能在代码层面优化了。不过相信他们会越来越好。
小程序二维码(当前版本为后续维护过,第一次可用版本两天搞定)