之前参加过小程序·云开发相关的分享,在团队内进行了推广,感觉官方的宣传不够直接,还是太玄乎了,这是收集了猫眼娱乐前端工程师的问题,和相关答疑,部分问题是和小程序·云开发的同学沟通过的结论
主要面向初级前端工程师,快速了解云开发是怎么回事,不涉及复杂代码
- 有小程序开发经验
- 理解 server 端基础,并有少量node.js server端经验
1. 小程序云开发是什么?
官方文档,不用着急点,下面FAQ未提及的可以进来看
主要提供两种能力
1.1 提供持久存储
持久存储是指删除微信或更换手机后,用户重新打开我们的小程序,仍旧能让用户看到自己的信息
主要通过两种存储容器
1.2 提供简化的server端编程环境
云函数
简单解释: 在小程序端写上函数名 + 参数,就能调用远端的一个函数
为什么不直接写到小程序端,而要绕弯子要这样? 最常见的原因是:
- 有些业务逻辑涉及 保密信息 ,不能写在小程序上,比如: 价格计算,交易流程
- 有些操作需要 更高的权限 ,比如: 管理员可以删除所有用户的数据.
- 桥接到第三方接口,小程序https接口域名数量超限,或者第三方接口不是https接口.
2. 直接操作数据库会不会有安全问题
云开发的数据库和传统数据库有些区别,他会自动给每个数据表增加一个 创建人字段 + 表权限设置 ,后续的操作都会基于这些约束,一般的策略是
3. 直接操作文件存储会不会有安全风险
类似上一个数据库的权限,通过 文件创建人 + 文件夹权限设置
4. 别人会不会调用我的云函数
这套机制是在微信app内部实现的,除非微信这套机制被攻破
5.云函数是用js写么,运行环境是什么?
是js,运行环境是nodejs 8.9,支持async await关键字
6. 使用了云开发,是不是就不能使用自己的服务端了
不是,两个可以并存,就当是看起来不一样的异步调用就好
// 云开发相关api
wx.cloud.xxxx()
// 自有服务
.request()
复制代码
由于是nodejs的运行环境,所以云函数可以使用http tcp模块,这样就能通过云函数转发请求到任意域名,不受小程序端的请求域名限制
7. 典型的云函数是什么样的?
// 小程序端,调用
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 + b
}
复制代码
函数名和目录名对应,根路径在project.config.json中定义,详细参考官方文档中的"我的第一个云函数"
8. 云函数还有什么特殊能力?
如要获取用户头像 昵称等信息,还是需要在小程序端进行授权才行
9. 云函数需要我们考虑服务器运维的工作么
不需要,只要开发好上传就行,运行环境是独立 封闭的,类 CentOS 7 的环境
10. 开发时和线上环境有隔离么
提供1个生产环境,和1个开发环境,存储和云函数都是独立的
这意味着多个开发者并行开发协作可能会有些小麻烦,同时只能有一套代码在开发环境,这就只能通过一些工作流程约定,比如收敛上传权限,每日自动部署. 应用类似git-flow的分支策略
11. 云开发是否提供有定位 地理信息 支付相关业务的支持
暂时没有,这方面的需求还是很强的,毕竟小程序是提倡线下扫码,扫码后还是期望能够获取到附近的相关信息,简单的比如城市 区划,详细的比如商家
小程序云开发的同学目前还在收集这方面的需求
12. 什么版本的基础库支持云开发
基础库 2.2.3 之后开始支持,但对于旧版本可以加个配置也能支持
app.json/game.json
{
"cloud": true
}
复制代码
13. 费用呢
目前免费,正在调研计费策略,可能是按照调用量,存储量计费
结语
目前看云开发基本成型,典型的业务都能覆盖到了,还有一些周边的东西需要完善
比如数据库存储这边的批量操作,事务的支持,存储容器还可以在增加一些,比如消息队列,其它的杂项如任务调度,开发者环境隔离,数据迁移升级
另一方面,作为前端工程师,技术能力边界的延伸,并不完全意味着获益,还包括背景知识成本,只有学习好这些,才能驾驭好新的能力,比如领域建模,设计模式,封装和隔离.
大家好,我是猫眼娱乐前端技术专家-曹宇,我主要负责猫眼娱乐电影选座交易业务前端,除了大家能看到的各种 Web 页面,还有小程序端和供应链端. 同时负责猫眼内部的前端基础设施,质量保证相关工作。
猫眼电影小程序从零发展到票务类别第一,主要关注点都集中在线上,这次分享的是一个线上 线下联动的活动,从开发到上线后遇到的一些有趣的事情,除了小程序技术的深度应用,还包括产品 运营层面的思考.