之前参加过小程序·云开发相关的分享, 在团队内进行了推广, 感觉官方的宣传不够直接, 还是太玄乎了, 这是收集了猫眼娱乐前端工程师的问题, 和相关答疑, 部分问题是和小程序·云开发的同学沟通过的结论
主要面向初级前端工程师, 快速了解云开发是怎么回事, 不涉及复杂代码
官方文档, 不用着急点, 下面FAQ未提及的可以进来看
主要提供两种能力
持久存储是指删除微信或更换手机后, 用户重新打开我们的小程序, 仍旧能让用户看到自己的信息
主要通过两种存储容器
简单解释: 在小程序端写上函数名 + 参数, 就能调用远端的一个函数
为什么不直接写到小程序端, 而要绕弯子要这样? 最常见的原因是:
云开发的数据库和传统数据库有些区别, 他会自动给每个数据表增加一个 创建人字段 + 表权限设置 , 后续的操作都会基于这些约束, 一般的策略是
类似上一个数据库的权限, 通过 文件创建人 + 文件夹权限设置
文件的操作使用服务端生成的唯一ID, 不会被穷举
不会, 云函数的网络协议是私有的, 并且有加上数字签名验证
这套机制是在微信app内部实现的, 除非微信这套机制被攻破
是js, 运行环境是nodejs 8.9, 支持async await关键字
目前还不支持修改运行环境, 未来应该会支持自选环境
不是, 两个可以并存, 就当是看起来不一样的异步调用就好
// 云开发相关api wx.cloud.xxxx() // 自有服务 wx.request() 复制代码
由于是nodejs的运行环境, 所以云函数可以使用http tcp模块, 这样就能通过云函数转发请求到任意域名, 不受小程序端的请求域名限制
// 小程序端, 调用 wx.cloud.callFunction({ name: 'foo', data: { a: 1, b: 2 }, success: function(res) { console.log(res.result) } ) // 云函数, 声明 // cloudfunctionRoot/functions/foo/index.js exports.main = async function(e, ctx) { return e.a + e.b } 复制代码
函数名和目录名对应, 根路径在project.config.json中定义, 详细参考官方文档中的"我的第一个云函数"
直接获取用户的openId
// index.js exports.main = (event, context) => { return event.userInfo } 复制代码
如要获取用户头像 昵称等信息, 还是需要在小程序端进行授权才行
不需要, 只要开发好上传就行, 运行环境是独立 封闭的, 类 CentOS 7 的环境
提供1个生产环境, 和1个开发环境, 存储和云函数都是独立的
这意味着多个开发者并行开发协作可能会有些小麻烦, 同时只能有一套代码在开发环境, 这就只能通过一些工作流程约定, 比如收敛上传权限, 每日自动部署. 应用类似git-flow的分支策略
暂时没有, 这方面的需求还是很强的, 毕竟小程序是提倡线下扫码, 扫码后还是期望能够获取到附近的相关信息, 简单的比如城市 区划, 详细的比如商家
小程序云开发的同学目前还在收集这方面的需求
基础库 2.2.3 之后开始支持, 但对于旧版本可以加个配置也能支持
app.json/game.json
{ "cloud": true } 复制代码
目前免费, 正在调研计费策略, 可能是按照调用量, 存储量计费