微信小程序的 云开发 都有哪些缺点呢?

2023-01-07 14:14:18 +08:00
 sdjl

网上有许多介绍微信小程序云开发的文章,都说解决了什么什么问题,怎么怎么方便,怎么怎么牛逼,云云。

但是,根据我最近的经验,我发现微信小程序有很多缺点,例如以下几点:

1 、不支持本地测试环境,本地运行时需要连接线上数据库,要么把正式数据和测试数据混在一个环境里,要么购买两个环境来回切换(在两个环境中来来回回的手动部署,不现实)。

2 、如果你有多个小程序,你会发现共享环境很麻烦。

举个例子:你购买了一个云环境,但你有 A 、B 两个小程序,你把云环境和小程序 A 绑定,然后把环境共享给 B 。此时,你想要为 B 开发一个新功能,你不能在 B 项目中编写代码,你需要切换到 A 项目,在 A 中写代码,然后把写好的代码复制到 B 项目,然后发布小程序 B 。

如果 B 的代码需要修改,你需要在 IDE 中切换到 A 项目,然后修改代码,在 A 小程序中调试,然后复制到 B 项目,再重新发布。

如果你有 10 个小程序共用一个环境,你需要把 10 个小程序的代码都拿到一个小程序的项目中去编写!

3 、每个云函数都是独立的项目,这意味着维护代码很麻烦。

你可能会有 10 个云函数(甚至 100 个)。 但是,微信规定每个云函数都是一个独立的 node.js 项目,如果你有一些 utils 代码需要在多个项目中共用,那版本维护会很麻烦。

4 、云数据各种受限。

前端一次只能读取 20 条数据。权限管理功能过于简单,使用起来又操作繁琐。许多事情在 MySQL 上就是一句话的事情,在云数据库上要研究半天,甚至难以解决。

5 、云函数容易超时。

想写一个类似 crontab 程序,定时处理一些工作,恭喜,云函数支持!但是不好意思,只能运行 60 秒!(有人说是 20 秒)。 写任何云函数,你都需要考虑 “万一超时了,进程被 kill 了,怎么办?”

6 、云存储(图片存储)居然不支持列表查询。

思考一下这个问题:你有一个进程,下载了一些图片放在云存储中,但是你的进程因为超时被 kill 了,没有执行完整,你没有保存下这些云存储文件的 fileID 。

然后你突然想起图片放在云端是要支付费用的,所以你想删除这些图片,自然想到 ls 列出文件列表,删除部分图片。

对不起,不支持!

目前微信云存储只支持“上传一张图片,api 返回一个 fileID” 以及 “提供 fileID ,api 删除图片” 这两个基本功能,其他功能都不支持! 保存了多少张图片?这个文档有多少图片?某个目录下有多少图片?删除某个目录?列出目录下的子目录? 统统不支持!

微信云开发宣传得很好听,实际使用真的很折磨人,相信 V 友中也有不少用过微信云开发的人,一起来总结一下?

让那些想要陷进来的朋友多一些参考,让已经陷进来的朋友多一些帮助。

2274 次点击
所在节点    微信
19 条回复
sdjl
2023-01-07 14:17:55 +08:00
我经常遇到这种情况:写了一些代码,运行,报错,错误提示看不懂,google 半小时,解决不了,头疼,实在解决不了,关闭微信开发者工具,重新打开,bug 不见了!!!
mozhizhu
2023-01-07 14:20:45 +08:00
我拿云开发做错误日志收集;其它的就是解码数据;不能纯靠云开发,操控很不方便。
sdjl
2023-01-07 14:21:06 +08:00
如果你的程序写得不够完整,在运行中因为重复执行某个云函数不小心下载了一万张图片,图片的 fileID 不小心丢失,恭喜你,你将永远不知道哪些图片可以删除(至少在微信提供查询文件列表功能之前),这些图片会一直存在云端,你每天都要支付费用。
sdjl
2023-01-07 14:22:31 +08:00
@mozhizhu 真的,所有东西在云端,需要通过 IDE 点击 button 来操控,一觉回到解放前。
sdjl
2023-01-07 14:31:27 +08:00
云函数有一个“日志”功能,文档上说 xxxx 代码可以写日志,然后去 IDE 查看日志。

我写根据文档写了代码,打印日志,但是 IDE 里面是空的,看不见日志,google 了半天没有找到解决办法。

提交工单问客服,原来要“付费开通高级日志功能”,才能看见日志。。。

文档里居然不提。。。
registerrr
2023-01-07 14:35:16 +08:00
之前尝试云开发是有一个免费额度能白嫖一把,那点免费额度本来就少的可怜(我印象里数据库读写每天好像就两三百,肯定不超过五百),结果现在那一丁点都不给了,起手就是 19.9 ,谁爱用谁用。
开发体验,不管是文档还是功能,总感觉是一个半成品。说能不能用吧,它也能用,就是不好用。
sdjl
2023-01-07 14:37:28 +08:00
写代码时,如果你不打开云函数的本地调试,小程序就会访问正式环境的云函数,本地调试时就可能会不小心操作正式数据库。

如果你打开云函数的本地调试功能,需要手动一个一个的点击打开,如果你有 20 个云函数,就需要操作 20 次。

如果你下楼吃个饭,会发现云函数已经断开连接,点击 “重新启动本地调试” 却没有任何作用,需要重启 IDE 。

然后再次手动重新点击打开 20 个云函数的本地调试。。。。

居然没有 “为所有云函数打开本地调试” 的功能。
registerrr
2023-01-07 14:45:42 +08:00
刚又看了一眼,5 折结束了,基础套餐 39 ,告辞
sdjl
2023-01-07 14:47:14 +08:00
云数据库看起来像 MongoDB ,但其实不是 MongoDB 。

需要完全重新学习这套 API ,学习成本高,且所学知识不能用于其他地方。
sdjl
2023-01-07 14:48:46 +08:00
@registerrr "刚又看了一眼,5 折结束了,基础套餐 39 ,告辞"

如果你想要把正式数据库和测试数据库分开,以免误操作正式环境,你还需要买两个云环境。
registerrr
2023-01-07 14:55:15 +08:00
@sdjl
2 个 39 么?之前好像一个号可以用两个免费额度的环境,现在这...幸好迁移的早,城市套路深,我要回农村

- "云数据库看起来像 MongoDB ,但其实不是 MongoDB 。"

这个确实,什么都好魔改一番,都得照着他的文档走(文档写的还辣鸡),就这还时不时,冷不丁的搞你一下。
kingjpa
2023-01-07 14:57:02 +08:00
云原生 本身解决的是人员成本,及产品可靠性。
少一个服务端,少一个运维。一年节约多少成本。
并发数上来的时候,代码架构不用做任何调整,直接+钱买量就可以。
你自建不得分布式,负载均衡,一致性等策略吗?这都是成本啊
sdjl
2023-01-07 15:01:48 +08:00
@kingjpa 你说得很有道理。

但这篇帖子的目的是为了总结缺点,帮助做云开发的开发者提前了解坑在哪里,避免掉到坑里爬半天。

所以,我们这篇帖子尽量不讨论“云开发也有优点”、“缺点优点各有利弊”这种话题。

我们尽量总结遇到的坑和解决方案,帮助大家解决问题。
sdjl
2023-01-07 16:24:04 +08:00
本地调试云函数容易超时,抛出 “Error: socket hang up” 异常。

根据官方文档,可以在 IDE 中把云函数的超时时间设置为 60 秒,在小程序中可以修改 app.json 的 networkTimeout.request 字段为 60000 ,可把超时时间改为 60 秒。

以上两个步骤均已改为 60 秒,但是本地测试时依然抛出 “Error: socket hang up” 异常。

目前,我本地调试云函数,大概只能运行 10 秒,达不到官方文档说的 60 秒。
qsfty909
2023-01-08 00:02:39 +08:00
自己搭建后台服务器吧,你说的问题都不是问题
sdjl
2023-01-08 13:40:29 +08:00
@qsfty909 不呢,我打算好好研究云开发,日后长期使用云开发。
sdjl
2023-01-08 13:41:35 +08:00
就是因为我打算长期使用微信云开发做小程序,所以我才开了这么一个帖子来总结它的缺点。
qsfty909
2023-01-09 00:54:58 +08:00
@sdjl 流量成本比自己搭建要高太多了,请慎重
sdjl
2023-01-10 10:29:29 +08:00
@qsfty909 "流量成本比自己搭建要高太多了,请慎重"

是么,目前刚刚接触,还没有体会到,谢谢提醒。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/907183

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX