这个项目断断续续写了一个多月,今天拿出来说说,也想听听技术上的意见。
先说清楚:是我自己做的,免费,没广告也没内购。发在分享创造,主要是想听批评。
起因挺土的。有天想算个房贷,下了个计算器 App ,填完数字点结果,先弹出一个贷款顾问的咨询框。关了又弹。当时就想,一个除法至于吗。
后来翻了翻手机,装着七八个用完一次就再没打开的工具——农历一个、汇率一个、记账一个。每个都几十兆,每个都要注册,每个都有开屏广告。
就想做一个干净的:打开能用,用完就关,别烦我。
微信小程序,19 个工具入口,一共 43 个页面。主包 6 页,其余拆成 10 个分包。
体积上,主包 110,403 B (约 108 KB ),全包 2,753,302 B 。2MB 主包限制是硬约束,所以截图、设计稿、报告这类非运行时文件全部走 packOptions.ignore 排掉了,不进包。
最想说的是离线这块。也就是没有后端、没有云开发、没有账号体系。账本、待办、密码笔记这些数据只写 wx.storage,不出本机。农历和节气用的是内置农历库,不调任何日期接口。
内容全部打包在本地:解梦 3052 条词条(按 10 类拆文件)、文案素材 60 条、三套心理测试题库( 28 / 25 / 24 题)、笑话 24 条、谜语 29 条、歇后语 30 条。
测试用 Jest ,32 个套件 528 条用例,跑一遍 36 秒。
解梦那三千多条不可能是手打的。做法是维护一份种子文件加一个生成器脚本,批量生成后跑校验,主要查新词条会不会跟已有的 word 和 alias 撞车,通过了再倒进数据目录。要扩量就改种子重跑。
心理测试做成了统一引擎。三套题库共用一个出口,支持两种题型(二选一、五级李克特)和三种计分模式(出类型、出画像、出特质分)。16 型那套的配对是四维全反的镜像规则。
还有个小约束是全程禁 Math.random()。需要随机性的地方都注入可复现的 rng ,不然测试没法断言。
这部分可能是最有分享价值的。
提审被驳回两次,理由都是《微信小程序平台运营规范》 3.2 条的 UGC 内容安全,指向 security.msgSecCheck,点名的都是图片类功能。
问题是这产品压根没有 UGC 。用户选一张图,本地压缩,存回自己相册,全程不上传、不分享,也没有评论区。全仓连一个网络请求都没有。
第一次的处理,是给图片页补了「仅本机处理」的显式声明,同步改了用户协议。 第二次驳回了具体的图片压缩功能。
最后的选择是把图片工具箱整体下线:从 app.json 摘掉注册,packOptions.ignore 里排除目录,提审版本只留二维码生成。image 分包从 111,044 B 降到 93,924 B 。
wx.storage 容量有限,不适合存大量数据欢迎拍。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.