通常,实现一个非静态的应用,服务端需要做以下事情:
- 购买一个域名,完成备案;
- 购买一个 SSL 证书,完成和域名的配置;
- 购买一个服务器,配置好服务器的开发环境,并处理域名到路由的相关配置;
- 购买一个数据库,并完成配置;
- 实现服务端业务逻辑
- 设计数据表,实现增删改查
- 用户登录验证、授权(微信小程序get access token)
- 配置各种日志监控等
通过小程序云开发
- 客户端请求服务端通过云函数,无需域名
- 硬件资源云开发提供,有一定免费配额
- 可视化环境配置,一键发布部署
- 日志、自测
- 可视化运维监控
- 数据表索引等可视化设计配置
- 云开发天然鉴权
== JS+NodeJS+MongoDB
不过是被封装过之后的版本……so并不能直接使用原生,
比如数据库API目前支持不够,经常让人很抓狂。
还有云函数的概念:运行在云端的代码,跟我们在工作中编码方式不同。比如云函数之间的调用,跟函数之间的调用不同,几乎相当于是两个服务端API,而且耗时上并不美丽……
some tips
- 小程序(客户)端可直接请求操作数据库、存储,同云函数
- 云函数,调用上下文context:cloud.getWXContext,可获取openid、appid,unionid,env
- HTTP API:之前使用微信小程序云开发,就只能客户端和云开发互相联系,云开发可以访问外部服务,但是外部服务无法访问云开发数据、云函数、云存储。所以新增了HTTP API这部分功能,但是这部分就需要鉴权了。
看我踩过的坑
- 社区:提问、回答、关注问题
- 微信群聊:
- MongoDB可以随意改变schema,但是云函数调用数据库API就挂了,最后解决办法是每次改变collection的结构时,都先将全部数据导出,将所有数据遍历初始化之后,再导入。(访问量少,所以不用担心并发问题……)
- balabala
- 云函数中抽取公共function,为了减少重复代码,复用加更好维护。but,每个单独云函数是个独立服务,还有服务的热启动、冷启动问题……对于请求量很小的应用,基本都是冷启动,耗时非常凶残。
解决方式: tcb-router,不拆分API,将一个云函数当成唯一服务端,路由配置,回到传统开发模式,同时可以解决云函数限制问题,但是可能会受到并发流量限制
对应支付宝的云开发
Basement : 云函数、数据库、云存储,同微信小程序云开发
基于Nodejs云应用 :一个完整应用