小程序开发笔记

前阵子考研时收集了一些想法和点子,这其中包括了前两年自己开发的小程序“TRPG偷懒君”,希望陆续实施。然而考虑到对这款产品的构思过于复杂,于是决定先实施另一个小程序开发计划,作为自己的小程序开发复健。这就是「时限管家」项目。

我经常会遇到生病时想起放置在家里的药品,却发现已经该物品已经过期的情况。而将场景再扩大,药品也能替换成食物、化妆品等物品。这些物品都具有共同的特征:与日常生活息息相关且具备一定的时效性。

「时限管家」便是一款及时提醒用户手头物品即将过期,从而达到对物品进行管理的目的的应用。

考虑到使用的便捷性,最终我还是选择先开发微信小程序,并利用微信小程序的云开发功能构建数据库和存储环境。 在开发过程中,我学习到了很多开发知识,希望通过《小程序开发笔记》系列记录下我学习的过程。


云开发

云开发是微信小程序开发工具的一个服务。开发者可以使用云开发快速构建数据库与后端代码,更好地接入微信生态环境。

早些时候,我在「TRPG偷懒君」开发之时便已开始使用云开发服务搭建数据库了,而这次对云开发的学习帮助我加深了对其的理解。

云开发提供了JSON数据库,每条数据都是以JSON格式储存的对象,因此并不像MySQL一样拥有外键、字段格式、限制长度等要求,构建更随意一些。在云开发后台,可以单独设置每个数据表的小程序端读写权限。 云开发能力还包含了云函数,即通过在开发工具内编写并一键上传部署即可运行的后端代码。云函数必须在node.js环境下运行。

云开发数据库的读写是通过wx.cloud.database()方法进行处理的,可以直接写在小程序的js文件内,也可以写在云函数里,前者称为小程序端而后者称为服务端。然而小程序端无法进行聚合操作;服务器端数据表的读写权限又不受云开发后台控制。

这些问题在开发初期为我造成了一定的困扰。比如我想利用云开发后台来方便的设置读写权限,便在小程序端编写数据库读写操作,然而这就无法使用聚合操作,先对数据进行排序再分步读取了。最终在这0.1版本中,我没有设置分步读取,而只是设置了简单的存取。接下来在0.2版本,我会对其进行改进和完善。


图片存储

我曾希望在用户录入物品时,可以附加图片备注。但是实际开发时,考虑到了一个问题:如果用户在上传或修改物品图片时,不删除存储在服务器里的图片,那么这些图片会成为垃圾占用服务器空间,日积月累会越来越多。

目前构想的解决方案是:

  • 当用户修改物品图片并点击保存后,先删除服务器中的原图,再保存上传的图片。
  • 当用户删除一件物品时,同时删除服务器中的原图。

因为上传图片操作涉及到同步和异步且比较复杂,在0.1版本中我直接删除了该功能。后续开发会补上。


表单

小程序官方文档里关于表单功能写的不是特别清楚,且官方文档和提供的案例片段里甚至有一些内容不一致,令我十分困惑。所以我并没有直接使用表单的提交方法。

但是女朋友说如果能用表单的响应就最好用表单的,那我还是找时间再学习一下吧。


流畅度

一个应用的使用流畅度是非常重要的。 在页面跳转、数据存储等操作时,如果不能加入一些响应操作或过渡动画,就会给用户带来“不流畅”的感受。

以下是我考虑的一些流畅性优化,会在后续版本开发:

  • 跳转到新页面并加载数据时,显示加载动画。加载完成后关闭加载动画。若加载失败则弹出提示。
  • 下拉首页显示加载动画。数据刷新并加载成功或失败后关闭加载动画并弹出提示,几秒后关闭提示。
  • 保存产品数据时,显示加载动画。加载成功或失败后关闭加载动画并弹出提示,几秒后关闭提示。

UI

作为设计师,UI竟是我最后考虑的内容。

在开发时限管家时,我优先考虑实现功能而非美化产品,所以0.1版本的界面非常简陋。

在0.2和0.3版本,我会为其设计一套较为美观的UI。


目前「时限管家」0.1版本小程序已上线,后续还会继续优化。感兴趣的朋友可以扫描以下二维码试用。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注