微信小程序的 云开发 都有哪些缺点呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sdjl
V2EX    微信

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

  •  
  •   sdjl 2023-01-07 14:14:18 +08:00 2912 次点击
    这是一个创建于 1011 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    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 友中也有不少用过微信云开发的人,一起来总结一下?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    我们尽量总结遇到的坑和解决方案,帮助大家解决问题。
    sdjl
        14
    sdjl  
    OP
       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
        15
    qsfty909  
       2023-01-08 00:02:39 +08:00 via iPhone
    自己搭建后台服务器吧,你说的问题都不是问题
    sdjl
        16
    sdjl  
    OP
       2023-01-08 13:40:29 +08:00
    @qsfty909 不呢,我打算好好研究云开发,日后长期使用云开发。
    sdjl
        17
    sdjl  
    OP
       2023-01-08 13:41:35 +08:00
    就是因为我打算长期使用微信云开发做小程序,所以我才开了这么一个帖子来总结它的缺点。
    qsfty909
        18
    qsfty909  
       2023-01-09 00:54:58 +08:00 via iPhone
    @sdjl 流量成本比自己搭建要高太多了,请慎重
    sdjl
        19
    sdjl  
    OP
       2023-01-10 10:29:29 +08:00
    @qsfty909 "流量成本比自己搭建要高太多了,请慎重"

    是么,目前刚刚接触,还没有体会到,谢谢提醒。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5904 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 02:36 PVG 10:36 LAX 19:36 JFK 22:36
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86