「小程序·云开发」使开发者可以便捷地使用“云”来开发小程序和小游戏,无需自己搭建服务器,“云”即提供完整的原生云端支持和微信服务支持,在降低开发成本的同时实现快速上线和迭代。
目前小程序·云开发已支持云函数、云数据库、云存储、云调用等多项云能力,并提供了丰富的API和小程序云控制台管理功能。在你的小程序产品研发过程中,你有使用「小程序·云开发」吗?你对小程序的云开发能力有什么好的建议?
参与#云开发#系列话题并提供高质量回答或建议者即有机会获得微信相框Classic一台,快来参加吧!
*获奖情况将在后续「社区每周」公告中公示,受近期疫情影响,公示与发货时间可能有所延长
*使用小程序云开发过程中的如有疑问或Bug反馈,可在社区云开发版块发帖交流
感谢大家的反馈,这里统一回复下大家提到的和关心的问题:
1. 已支持能力
云开发从诞生之后陆续推出了很多新能力,大家提到的有些以为不支持的能力其实是已经支持上了的:
* 云数据库备份与回档:云数据库已支持自动备份
* 云函数本地调试
* 云函数定时触发器:云函数支持触发器并且已支持在触发器调用的云函数内使用云调用
* 云开发管理端 HTTP API:可用于自建管理端、数据互通等
* 云数据库聚合查询能力:可支持分组查询等场景
* 云数据库安全规则:更灵活、清晰的小程序数据访问自定义权限控制
* 云函数云端安装依赖
* 付费版:已推出多项预付费套餐,以及按量付费的能力
2. 支持中能力
以下提到的能力也正在支持中,敬请期待~
* 微信支付
* 管理运营权限分级
3. 性能
我们已针对云开发性能做了几次性能优化,也有不少的提升,我们会持续进行优化,有发现性能相关的问题欢迎大家的反馈。
云开发资深用户
目前已经使用云开发完成跨平台应用的开发,底下开发的共23款各种的小程序全部使用云开发。
从目前的使用情况看,云开发不止支持微信小程序。qq小程序、移动APP以及WEB目前都已经支持了,跟着云开发从小到大,真的很nice。
尤其是云开发免备案快速上线后端服务就是非常方便了。
===============建议线===============
云开发云存储需要增强一些能力了,目前相对太弱了。比如文件访问监听、文件下载监听,只要这些支持,才能够真的帮助开发者完全依赖云开发来做成一些事情,否则只能是辅助服务。
借楼上mysql的建议,目前云开发确实已经支持了,不过不够完善。
WEB管理后台是云开发的死穴,不过现在听说已经在上新了,云开发中web管理不是梦了。
=============推广线================
口说无凭,还是准备要打个推广。
微信小程序"数据查询助手"全部使用云开发来做的后端支撑。另外用于数据表格转换的网页工具assetn.com也完全使用云开发来做的。
还有使用云开发做的移动APP以及PC用于管理后台。
最近逐步上正轨,查询通道推web网页版,qq小程序,支付宝小程序等多个渠道。已经在逐步规划着上新了。
这个小程序是目前真的用心在做的,如果能帮助到大家的日常工作应该是最好的,完全免费,在做成型之后,做一下私有部署的开源服务。希望大家多多支持!!!
想要相册
====说正经事专用分隔====
重要的事情放前面
最近和群友聊天提到云开发的一个问题,就是不能和自己的环境一样设置一个开发环境,云函数、云数据库都是的,很不方便多人协同开发。现在了解下来都是专门申请一个小程序给开发环境
====久远的碎碎念分隔====
有一段时间没正经用云开发了,不知道有没有改变,转一下若干年前发的吐槽云开发的内容
早就知道小程序出了云开发,看介绍是很不错的功能,开发者不再需要再去配置、管理数据库、接口等服务端的一大堆东西,可以节省不少费用和时间。我这两天才实际使用云开发功能,用起来并没有我所想的那么顺畅。以下是几点吐槽,可能很肤浅,也可能不正确,欢迎指正。
1、小程序中可以直接调用api操作云数据库,但是功能有限制,比如只能修改自己创建的数据、不能在修改数据的时候使用where条件等,但是可以通过云函数来跳过这些限制。这个我就不明白了,官方这么搞得目的是什么呢?为什么不把这些限制去掉,直接放到api里呢?直接用api和用云函数,好像并没有什么限制上的区别啊
2、说到用云函数来操作云数据库,就不得不提wx-server-sdk,根据论坛里搜到的内容以及我自己的实践,要开发者先在本地安装相关依赖,再部署到云端,才能生效。这个我又不明白了,不是“云”函数吗?为什么官方不自动在云端把这些依赖也自动部署配置好?非要开发者自己在本地先折腾一番之后,再同步到云端呢?
总归这两点给我的感觉就是满满的“微信官方技术部门一贯的简单事情复杂化”的调调,我实在是想不出为什么要这么搞,就不能让开发者把心思都放在代码上吗?大概除了一贯的以让开发者不爽、给开发者找麻烦之外,我实在是想不出其他理由
======================
附上官方回复和我对回复的回复
感谢反馈,我们会持续优化开发体验
1. 小程序端和云函数端有权限上的差别是因为小程序端的权限控制必须更严格,客户端操作数据库是个风险相对高的操作
2. 我们会尽快推出云端安装依赖,尽情期待
我的回复
1、就是说通过分成两种方式,让开发者更麻烦,来让开发者觉得权限操作很严格吗?
2、我的意思是在云端是否需要依赖,需要哪些依赖应该自动完成,不要再把这些事留给开发者了
--↓↓👍点击“有用”是回答的动力哦
--↓↓👍点击“有用”是回答的动力哦
2.就是因为有人觉得麻烦,所以有api,(我也觉得麻烦,还得写版本号,直接写死不得了)
以下是对云开发建议:
1、云开发的访问速度始终不如自己的服务器,希望能加强;
2、云开发数据库虽然和mongo类似,但是感觉上不够让人放心,有点不够大气,而且最近更新很少了。最新的版本里,已经很少有云开发方面的功能升级了;
3、建议体验版可以免费使用任何云服务,无限额,无限制;比如ocr,现在居然体验版也用不了,必须先购买才行;
4、建议提供更多的开源案例,这点非常重要、非常重要、非常重要,说三遍。不一定是由官方提供,完全可以发起奖励活动,鼓励大家提供开源模板嘛。比如电商小程序模板、论坛小程序模板、资讯小程序模板等等。
5、云开发的文档太简单了,写得就好象认为每个读者都应该是mongo高手似的;说实话,找个人把mongo文档,修改成云开发的,都行。
6、付费套餐的问题,收费得太早了,也太抠了;限制了云开发的发展;
7、云开发的安全性不够,微盟的删库走人,云开发完全没有办法阻止啊。
8、代码片段不支持云开发,想上传几个云开发的代码片段都麻烦的一笔。
9、云开发数据库的权限问题,现在只有四种权限,能不能开放最极端的权限,即小程序端也有管理员权限,你只需要提供这个选项,我负责承担选择这个权限的责任嘛。但是你不能让我连选都不能选,我买台电脑,难道还不给我管理员的权限?美其名曰为了数据安全?
10、云存储的文件操作指令也太少了吧,能不能给个查询接口啊?
11、云数据库的操作的功能建议:
a、collection可以自动创建,即用户脚本执行,如果发现没有该collection,先自动创建该表,再执行脚本;
b、update一条doc时,如果该doc不存在,自动add一条doc;
c、批量指令:批量add,批量remove,批量update
d、表数据过期自动删除,设定时间索引,表记录在指定时间规则符合时,自动删除;
附:我们在云开发的应用情况:
可以很负责任地说,云开发,我们是认真的。
一、完全基于云开发的付费内容课程平台。
1、集成了用户端和内容管理端;分成两个小程序的模式已完全放弃;
2、支持图文和视频;
3、直播资质积累中。。。
4、支持电脑上发布和管理内容(http api),新版本已放弃,换成支持电脑版小程序;
5、完美云开发微信支付解决方案:包括支付、退款等,针对云开发不支持支付成功回调的完美方案,以及用户不点击完成直接锁屏的解决方案。即将支持企业付费到用户零钱或银行卡(正在积累资质中。。。)
6、云开发实现订阅消息、二维码、内容安全检查。
二、混合开发:传统小程序+云开发,这种模式在所有开发的小程序中得到应用
1、所有微信后台API,换成云调用实现;
2、所有敏感信息,换成云开发实现;包括openid、unionid、用户信息、电话号码;
3、订阅消息、openapi、二维码、OCR、内容安全检查等,完全使用云开发实现;
4、部分图片直接使用云存储,部分图片还是会存在腾讯云cos里;
5、小程序传统开发模式的后台,换成nginx+nodejx+koa2+mongodb,无限接近云开发的架构,如果不是云开发数据库并不是完全兼容mongodb,我们几乎想做一套云开发到koa2+mongodb的跨平台中间件;
6、我们传统小程序的后台服务器,如今只保留了业务逻辑和mongo的操作,基本没有一句与微信后台API打交道的代码。
7、统一支持所有小程序的支付回调notify_url,并开放给任何人使用。
暂时就这么多,欢迎一起讨论。
云开发有问题,欢迎找老张,靠谱。
我也来说一下吧,作为最早接触云开发并且使用者,这一路走来见证了云开发越来越流畅顺利。
作为一个国企的微信产品经理,7年没碰过代码后,在19年初又因为云开发重新捡起来,一个人搞定了佛山移动小程序,主要还是云开发带来的便利,从最开始的聚合页到后来的网络报障系统(个人、管理员、WEB端),再到链接线下渠道了一店一码,砍价、今年接触的直播,客户也从0增长到了40W,现在回想起来觉得挺不可思议的。也谈谈下面几点:
1、真正带来便利性,加速开发的是云调用的开放,真的太便利了,之前加解密总是偶尔会报错,有了云调用再也没有这个烦恼了
2、随着我们小程序的功能不断完善,一个个小版本的迭代,50个云函数感觉真心不够用,现在只能不断合并函数去做路由,由于项目都是一点一点的需求敏捷开发出来的,所以整体考虑不是很全面,但是即用即上,立刻试水的方式很好,希望针对付费版可以增加云函数的个数。
3、数据库的原子性希望可以仿照mongodb,或者简化,虽然最近支持了,但是真心难用,还是换了其他折中的方式解决,消耗了性能来保证原子性。
4、本地调用希望可以少一些BUG
暂时就这些吧
————一个会写代码的产品经理
5、数据库的时间类型,每次get出来后会变成字符串,很难操作
6、更新数据时能否返回更新的结果,而不仅仅返回是否成功
因为小程序后台请求数量过多导致请求慢,
最近把小程序不必要的请重复请求数据放到小程序云上去。
还有一些服务端的API可以直接通过云函数调用不经过服务器,如:订阅消息,图片上传下载,
结合使用效果还不错。
个人建议:小程序云数据库建议新增一个定时函数,方便清理不要过时的数据和文件,
首先,感谢官方对云开发现有特性的总结(把我想说的已经说完了,还能说些什么)。
其实,Serverless从来都不是什么新概念。简而言之,Serverless 就是 FaaS(Function as a Service,函数即服务) 和 BaaS(Backend as a Service,后端即服务) 的结合。
简单来讲,小程序云开发就是使用了腾讯云的后端服务(比如云数据库、对象存储、消息队列等,这些云服务,可以极大简化我们的应用开发难度。),同时使用云函数空间中发布的函数。
阿里云、腾讯云包括较早针对小程序提供云服务的知晓云,都是Serverless的产物。
小程序云开发,基本的特点和优点:
1 无状态----因为每次函数执行,可能使用的都是不同的容器,无法进行内存或数据共享。如果要共享数据,则只能通过第三方服务。这对于习惯了前后端分离开发的同学应该是再熟悉不过了。
2. 无运维、少维护----使用云开发我们不需要关心服务器,也只需要在运维商投入很少的精力,这也是云开发思想的核心;
3.成本可控--因为我们只需要为函数的运行、内容的存储、数据库付费。函数不运行,则不花钱,也不会浪费服务器资源。包年包月和按流量付费灵活可变,适用于流量渐进型项目上马。
4 免备案!这个省了多少麻烦就不说了。
使用云开发也做了项目,基本的api使用参见文档就好。
这里就说说官方大大没提到的,对一些项目结构、管理方式、功能拓展方面的思考和建议。
1 - 云函数依赖及层级划分。
每个云函数实际是一个独立的npm包,一个独立的容器,并不能看做是一个简单的函数。好处?彼此独立,便于平行分工。然而,项目中我们需要合理的进行层级规划。
这时候问题来了:公共的npm包怎么办?自己写的分层怎么办(譬如,数据层,服务层,db层)?
不外乎以下几种解决方案:
a. 独立开发出来,每个云函数里面扔一份拷贝(愚蠢,占空间,改动一点,全改一遍?pass!)
b. 独立开发出来,以npm包的方式发布,在每个云函数的package.json中加入依赖(看似解耦了,然而一是本地开发不太好弄,二是依然会在每个云函数的node_module中占用空间,三是万一更新了,每个云函数的依赖需要 update... pass!)
c. 为你的分层单独定义一个云函数,其他云函数以CAll function的方式调用(基本解决以上两者的问题,然而想想其他云函数中的一call function,不优雅! pass!)
d. 使用layer。这个在小程序云开发文档中并未提及,但是相信我,它真实存在。登陆腾讯云开发的pc后台:
看看文档说明:
比较好的方式,虽然需要独立开发、手动打包上传,但是相对于发布npm包,算是比较好的解决依赖的方案了。
我的建议:在云函数根目录中划分出common package,放置依赖、声明第三方npm包。供所有云函数使用和依赖。
2 - 权限管理。
在不使用云开发的时候,小程序的提审发布无外乎ide上传,mp后台提审(第三方服务商的api提审暂时不提)。相信很多公司小程序代码开发、小程序提审、小程序后台部署的权责应该是分开的吧(什么?你们公司就你一个人?当我没说),出了问题,权责到人。
那么使用云开发,问题来了。云函数几乎就相当于传统开发模式下的后台,任何一个开发人员都可以在ide中进行部署和发布、任何一个开发人员都可以看到数据库数据、运行脚本修改数据,这里的风险有多大就不用细说了。
我的建议:类似mp后台,划分出不同的人员权限,在ide的操作中直接体现!
3 - 云函数环境。
优点:目前云函数空间对于小程序调用方来说基本是黑盒操作,可以在小程序中直接调用云函数,也可以暴露出http服务供网站、app进行调用,这是大杀器。从小程序角度来看,以前的拆包、抓包获取后台api接口数据的方式基本行不通了,数据安全方面得到了极大的保障;从http服务来看,可以进行鉴权,方便且贴心。
然而,云函数环境没有固定IP。
敲黑板,划重点。
在当前后端及服务的大环境下,很多公开的服务、接口为了安全性的保证,都需要在你申请服务的时候填入调用方的ip白名单。那么,设想一下,我的云函数中需要调用此种外部接口和服务,怎么办?
当然,可以申请云函数域名白名单。
然而实操后发现,对于从小程序IDE中创建的云函数空间中的云函数,无法设置公网IP;
从腾讯云管理后台云函数管理中创建的云函数空间中的云函数可以设置,然而此环境小程序又无法使用。
死局。
难道再前置一个cvm网关调用么...
不过好消息是,工单及群中的官方人员确认不久会开放对小程序中创建的函数环境中的函数的固定出口ip支持。
4 - 其他服务。
小程序云开发既然是运行在腾讯云基础上的,当然可以无缝使用各种云服务,譬如:
文档和demo也对这些的使用有所提及。譬如如何调在云函数中使用mysql,如何进行图像安全监测、图像处理等等。
但是,目前的小程序云开发的函数服务,只是腾讯云的云函数的一个子集。
譬如,目前小程序云开发云函数环境只支持node,云函数支持的种类很多......
譬如,目前小程序云开发只支持两个函数环境......
譬如,上面提到的公网固定IP还未开放......
等等。
我的建议:开放更多小程序云开发的功能,逐步向云函数靠拢。同时,丰富文档、demo、和一些架构实践。
譬如:小程序云函数环境能否和腾讯云上的cvm加入同一个私有网络(拿来做前置网关)?如何利用云函数和api网关搭建更强健的api服务?大公司对于云开发架构的一些具体实践?等等等等。
总结:
在我看来,任何一个新技术、新服务,吃透它的本质、摸清它的基本结构、提炼最佳实践,是重中之重。我相信,小程序云开发的api、db操作、各种文档,都会慢慢丰富和完善起来的。
云开发必然是未来的趋势,虽然现在小程序云开发尚有各位参与者包括我在内的各种抱怨,然而爱之深、恨之切,终将有一天,你我都会大声说出:“真香”!
迎接云开发!
拥抱云开发!
善用云开发!
奖品随意,本人算是云开发“中度实践者”,说说一些自己的看法~
===== 它改变了什么? =====
先说下好处吧!
在获取授权openId之流,免费存照片,获取二维码等等。。。是真的香~
1、前端一条龙,全栈开发?的确大大降低了开发成本,有时候简单的小程序甚至都不用配后端/服务器
2、severless的践行者?感觉未来云开发,本地无环境会成为一个大趋势
比如这篇我自己的云开发实战~
https://developers.weixin.qq.com/community/develop/article/doc/00006ed0ca0db063252ac0f5e5c813
===== 一些问题 =====
>>> 1、风控:部署权限问题
不像小程序代码本身有严格的审核发布控制,云函数 只要有开发权限的人就能上传,然后悄无声息的部署上线,就问你怕不怕?
上次因为本地某个API无法调试,直接上传到线上给部署了,吓尿了《《《《《《
如果没有就会出现风控问题,建议后面云函数 上传部署和小程序代码发布权限一致,并设有拦截和log
官方能否提供各种环境的分离:云函数/数据库 Dev/prod!!!只要给2套环境吧,不然风险真的大,特别是改数据库的时候(test环境可以不要)
>>> 2、云存储远程操作API
首先是上传真的慢,虽然免费。。。不能要求太多。。。但还是希望如果可以就出个付费快速上传的
希望能支持API批量执行添加和删除,由于在实际开发中图片特别的多,2000+张图片,一开始是一个文件夹/一个文件上传的,导致后期一些维护效率低下
为什么要支持API批量操作呢?
主要是未来可以配合自定义后台做图形化界面的数据更新
>>> 3、云函数本地调试各种BUG
本地调试云函数可以说是十分方便和重要的,但是目前看来遇到的问题是:
有些API本地不支持,直接报错,就是说本地还有较多的API不能模拟,比如event中的userInfo
希望未来本地调试工具对云函数的支持覆盖有大的提升
>>> 4、数据库的安全担忧:备份和回滚
开发中,只能把一些不重要的数据,如用户浏览历史,个人习惯配置放在现在的云数据库中
为什么不敢大规模使用这个数据库呢?
(1)权限管理有些奇怪,比如仅创建者可读写? 能否设置白名单机制呢?
(2)自动备份问题
(3)数据回滚问题
>>> 5、接口:健壮性和稳定性
访问量大的时候,不时会出现报错。。。或者timeout的情况,比如生成海报过程中获取各种小程序码,头像等等情况
免费归免费,希望未来能出一个企业付费稳定版,不然大企业真的放心用
>>> 6、封闭的系统:数据无法通过第三方修改
为什么“公司级开发”一开始对云开发的一些功能浅尝即止?
对于微信来说,云开发还是一个闭源环境,很多新数据和内容的修改和部署,只能通过IDE工具的后台,手工操作
不知道未来能否开放API,可以支持第三方公司后台操作和SQL执行
=== 免费部分 ===
提供大部分功能,对个人开发者的扶持!!!
=== 付费部分 ===
一些进阶功能,如果好用,企业用户肯定愿意掏钱的~
权衡以上问题,可以考虑对于公司级用户开放一些特别的功能(付费)这样既可以大大增加 “云开发” 的用户量,也可以在保持用户粘度的同时有些收入~
>>> 总结/思考 <<<
不要让很多用户因为各种各样问题浅尝即止!
免费一开始的确吸引人,但如何把免费吸引来的用户留下来,牢牢锁定用户,这些是值得产品思考~
在惶惶不安中,开始每一天的开发~
首先,我没有用云开发,原因就是每个小程序的数据是封闭的,不能做到数据互通,曾经有大佬建议说,云开发只用做接口转发,后台还是自己的,这样就可以数据互通了,但是我有自己的后台何必再用云开发呢?emmmm...
当然云开发是很安全的,很多大厂会把云开发当做鉴权网关,预算允许的情况下,我可能也会考虑这么做。
如果云开发能和腾讯云的服务器组建子网,直接局域网访问的话,可以省掉一笔网关和负载均衡的钱,安全系数和可扩展性也会大大的提升。这样的话云开发可能会彻底沦为中间层网关了,可能会违背云开发的初衷!emmmm...
---------------------------------- 分割线 ----------------------------------
前几天在群里听说了这么一件事,本地调试接口时没有切换环境,直接把开发代码部署到了生产环境,幸亏发现的及时,偷摸改回来了,不然就出大事了。建议云开发在部署生产环境时加一个扫码验证,不然任何有权限的开发人员都可以随意部署生产环境!太危险了!
我只想要狗灯+我并没有照片可以挂(我后悔了,请给我相册)
=====说正事专用分割线=====
云开发在一开始就有关注过,但是一直没有尝试。但是或多或少还是有了解过。
我之前看过一些云开发相关的东西,貌似:
-----
1.不需要授权即可获取openid啊(这个在服务端后续也加了,不过云开发貌似可以直接获取用户信息了)
2.开发者不需要维护后端代码、不需要会后端语言及数据库相关操作也可开发联网小程序啊
3.降低小程序的开发及使用成本啊
等等,这些都是显而易见的优点
-----
但是,云开发貌似不是很好的支持数据管理?(并没有发现,如有人接触过,可以指出)
由于云开发是使用腾讯(微信)的服务,所以就有可能导致一崩崩一片(貌似已经出现过了)。
另外还有异步的回调,不少人其实都不太会使用promise,如果能兼容小程序常规的success会不会稍微好一点?(这个简直是暴论!)
其实主要还是不够灵活吧,感觉,我还是习惯掌握在自己手里的感觉。(???)
=====
至于其他的,还得用了之后再说……毕竟我是真 云·云用户
如果觉得有帮助,请点个「有用」。千山万水总是情,别问「尾巴」行不行
如果觉得有帮助,请点个「有用」。千山万水总是情,别问「尾巴」行不行