本文包含大量个人主观情感,仅代表我个人在开发微信小程序过程中的真实体验。
之前做过两个 Web 应用,趁着这个暑假有一些时间,我决定把这两个应用都做成微信小程序。之前从来没有开发过微信小程序,所以这次也算是给自己找了一个新的挑战。
不过,截至这篇文章发布,我的两个小程序都还没有正常上线。
真正开始开发之后我才发现,微信小程序并没有我想象中的那么简单。原本我以为,只需要把代码写完,然后提交代码、填写一些资料,审核通过之后就可以上线了。
事实证明,我想得太简单了。
技术上的限制
首先是微信小程序自身的运行环境限制。
我的其中一个 Web 应用使用到了 OpenCV,但是微信小程序并没有直接支持 OpenCV。我之前在 Web 应用中是直接引入 OpenCV 的 JS 文件,但这个文件体积太大,根本无法直接放进小程序里。
于是我又尝试重新编译 OpenCV,希望能够得到一个体积更小、更适合微信小程序使用的版本。
结果当然是失败了。
最后,我只能放弃 OpenCV,重新寻找其他纯 JavaScript 的替代方案来实现原本的功能。
这只是我遇到的一个具体问题,但也让我比较直观地感受到了微信小程序和 Web 应用之间的区别。
在 Web 开发中,只要浏览器支持,很多东西都可以直接使用,遇到问题也可以自己想办法解决。但到了微信小程序,你首先需要考虑的是:
这个东西微信小程序支持吗?
如果不支持,有没有替代方案?
如果没有替代方案,能不能自己重新实现?
对于习惯了 Web 开发的人来说,这种限制还是挺难受的。
第二个问题是兼容性。微信开发者工具提供了模拟器,可以模拟 Android、iOS 等不同环境。在电脑上使用模拟器进行开发和测试当然很方便,但模拟器终究只是模拟器。
你在电脑上测试没有任何问题,放到真机微信里可能就会出现一些奇奇怪怪的问题;Android 没问题,换到 iPhone 又可能出现新的问题。
这其实是移动端开发中比较常见的情况,但对于第一次开发微信小程序的我来说,确实增加了不少额外的工作量。
所以,开发者工具里的模拟器可以帮助你开发和调试,但真机测试还是必不可少的。
审核、备案和认证
如果说前面这些还属于技术问题,那么接下来遇到的问题,就和代码开发能力没有太大的关系了。
代码有问题,可以改;功能不支持,可以找替代方案;兼容性有问题,也可以慢慢调。
但微信小程序开发过程中,真正让我头疼的,反而是审核、备案和认证。
隐私权限
如果小程序涉及手机上的一些隐私权限申请,就需要提前在微信公众平台进行相关配置,并填写用户隐私收集说明。
我在一开始开发的时候完全不知道这件事情,直到提交小程序之后,发现隐私授权弹窗根本无法正常弹出来。后来在网上查找资料才知道,原来还需要额外进行配置。
这件事情本身其实并不难,真正让我觉得麻烦的是,如果你是第一次开发微信小程序,很可能花了大量时间把功能全部做完,最后才发现还有一堆东西需要配置。
整个过程大概就是:
代码写完了。
功能做好了。
提交审核。
发现还有配置没做。
改代码、改配置。
重新提交。
然后继续等待审核。
小程序名称和介绍
接下来就是小程序名称和介绍的审核。
光是小程序名称,我就已经有点懵了。注册微信小程序的时候有一个名称,备案的时候又涉及名称,微信认证的时候还有一个名称,最后还需要按照认证阶段的要求来处理。
小程序介绍也一样,它不仅仅是展示给用户看的内容,还可能影响备案和认证能否通过。
而我的两个小程序,偏偏都和题目、作业批改有关:
一个是选择题答题卡批改。
一个是英语作文批改。
这两个应用都是我自己开发的免费工具,没有收费,也没有商业化计划。只是觉得自己做了一个东西,既然能够帮助别人,那就免费给大家使用。
但是因为涉及「教育」「批改」等关键词,在审核过程中就遇到了各种问题。
这让我非常无语。
一个个人开发者,自己花时间做了一个工具,然后免费提供给别人使用。按理说,这应该是一件挺好的事情。
但现实给我的感觉却是,想把一个工具免费给别人使用,首先得解决一大堆和工具本身没有太大关系的问题。
有时候甚至会让我产生一种错觉:
微信是不是在逼着个人开发者走商业化?
如果不商业化,那就只能「用爱发电」?
当然,这只是我的个人主观感受。但对于个人开发者来说,这个过程确实不太友好。
支付功能
支付功能我目前倒是没有做,不过在了解相关规则的时候,我也发现小程序的支付能力和主体资质存在一定关系。
对于企业来说,认证费用可能根本不算什么。
但对于一个只是利用业余时间开发免费工具的个人开发者来说,哪怕只是一些认证费用,也会让我产生一个疑问:
我只是想做个小工具而已,为什么我要先解决这么多和代码无关的问题?
审核结果不稳定
目前,我的两个小程序一个卡在备案,一个卡在微信认证。
两个小程序其实都和教育、作业批改有关,但不同审核员给出的结果却让我非常困惑。
最典型的一次是,我的一个小程序用于选择题答题卡批改,审核员告诉我:
选择题答题卡批改涉及教育行业,不允许备案。
而我的另一个小程序用于英语作文批改,审核员却告诉我:
作文批改不涉及教育行业。
看到这里的时候,我真的直接笑了。
选择题答题卡批改涉及教育行业,作文批改却不涉及教育行业?
这到底是什么判断标准?我是真的搞不懂。我不知道这是审核标准本身存在差异,还是不同审核员的理解不同。但对于开发者来说,最难受的地方就是,你根本不知道下一次提交会得到什么结果。你不仅要写代码,还要猜审核规则:
改名称。
改介绍。
重新提交。
等待审核。
再根据审核结果继续修改。
有时候甚至会让我怀疑,审核员是不是为了保险起见,宁可拒绝,也不愿意承担审核通过的风险?又或者只是因为审核量太大,根本没有真正理解开发者做的是什么。我不知道答案。但整个过程确实让我非常无力。
总结
到目前为止,我对微信小程序开发的感受可以总结成一句话:
微信小程序开发,就是一坨屎。
这句话当然非常主观,也非常情绪化,但至少这是我目前最真实的感受。
我原本以为,开发小程序最大的难点应该是:
怎么把功能做出来。
后来才发现,真正困难的反而是:
怎么让做出来的东西顺利上线。
技术上,你需要考虑:
代码包大小。
基础库支持。
API 限制。
模拟器和真机兼容。
不同平台之间的差异。
开发完成之后,你还需要考虑:
隐私权限。
小程序备案。
微信认证。
小程序名称。
小程序介绍。
各种审核规则。
而这些事情,有相当一部分和代码根本没有关系。
所以我一直在思考一个问题:
相比于普通 Web 应用,微信小程序到底有什么是不可替代的?
Web 应用至少可以让我自由选择技术栈、自由部署,也可以自由决定产品形态。
微信小程序最大的优势可能就是微信生态和用户入口,但与此同时,你也必须接受平台带来的各种限制。
对于企业开发者来说,这些问题可能都不算什么。毕竟有企业资质,有专门的团队,也有人负责审核、备案和合规。
但对于一个利用业余时间开发免费工具的个人开发者来说,这个过程真的非常折磨。
所以,至少以我目前的体验来看,如果你只是一个个人开发者,只是想利用业余时间做一个免费的小工具,我不太建议你轻易尝试微信小程序。
如果你的产品必须依赖微信生态,那当然另当别论。
但如果只是为了把一个 Web 应用再做成一个微信小程序,我建议还是先问自己一句:
真的有这个必要吗?
至少现在的我,还没有找到一个必须做成微信小程序的理由。
而我的两个小程序,目前一个卡在备案,一个卡在认证。
至于最后能不能成功上线……
我也不知道。
继续折腾吧。
毕竟,代码写完了,真正的挑战才刚刚开始。