前言
2019高校微信小程序应用开发赛
今年3月5号,2019高校微信小程序应用开发赛正式启动了,当时已步入大三下学期的我们,都开始感受到了不止一点的就业压力,感觉开发经验不足为大多数在校学生找实习路上的一个坎,于是身边的同学都纷纷加入到了各种专业学术竞赛的参赛大军,这不仅能增加个人实践经历,还能为自己的简历增添一笔,当然我也不例外。
拖延
这个比赛明明三月已经开始,但是前期因为没能找齐一个完整的制作团队,队伍里只有我和一位和我一样走前端的舍友,而自己觉得不错的走后端的同学又已经和别人组了队……由于缺乏负责后台的队员,我们两个也没有想好题,专业的课程又比较多,就一直没开始,这个状况一直持续到了3月下旬。
3月23号,一位工业设计专业的15级师兄得知了这个比赛,找到了我舍友,问她还缺不缺成员,师兄说他不懂开发,但是他可以在产品定位等方面给我们一些相关建议,舍友询问了我的意见。遇见这么热心的师兄,在大四这个赶毕设的节点还这么有热情去参与这些,我当然是十分欢迎的啦!
后来,我们有时间就去学校的咖啡吧一起讨论定题的事情,后面会大概提到。但是很不幸的,4月中我因为个人原因住院了,学校那边请了两个星期的假……住院期间我也有和舍友在讨论这个比赛的选题的事情,这段时间她有和师兄讨论过几个题,也询问了我的建议。舍友当时对小程序的了解程度也未及我,开发缺了主力,小程序的开发便一直被拖延了,一直等到了5月多才正式步入开发阶段。
写这篇博客原因
五月用了大概三个星期的时间,开发了一个头脑风暴微信小程序,小程序的整体基本框架的搭建和大部分工作,基本都由我一个人撑起来的,也不是说辛苦,但是就是有点感到可惜。因为在五月下旬,好多课程的课设与作业都扎堆的要汇报或者提交,赶作业都来不及,舍友去撑我们的组队作业,而我撑着我们这个用来投比赛的小程序,因为前期拖延与后面开发只有我一个,十分缓慢,这个作品最终提交上去的,并不是一个很完善的版本,昨天算是一个节点吧,5.31晚上九点小程序截止提交了,也算是为这个小程序画了一个小分号。
这次开发在有些方面感受比较深刻,便希望记下来,作为一个总结,也敦促自己不断学习!
定题
三月份时,我和舍友都没有想好比较好的选题,后来我们想到了我们上学期交互设计课程的大作业。于是我们打算将之前做过的一个“及时帮助人平台”的交互设计作品中的一个小部分“街边商店作为失物招领点”的相关设计用小程序实现。
后来师兄加入了之后,我们告诉了他我们的想法,但是他觉得这个不太好。这位师兄校招去了金山的产品经理岗位实习,他对产品的各种都比我们熟悉,这方面的经验也比我们丰富,那我们当然就还是会比较重视他的意见和建议。我们一起讨论过好几个题,最后终于在4.23定下了这个在线协作的头脑风暴。
开发
五月真的是黑色五月,作业都扎堆得把人压得怪累的。等到师兄出了初步的设计稿后,五月初正式进入了开发阶段。
这次小程序开发,因为缺少后端成员,我们也对数据库不太了解,因此我们选用了微信提供的云开发服务。
开发者可以使用云开发开发微信小程序、小游戏,无需搭建服务器,即可使用云端能力。
云开发为开发者提供完整的原生云端支持和微信服务支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥。
界面设计
我们觉得颜色太亮眼了,后来就改了
技术方案
前端
使用微信小程序开发,应用小程序提供的原生组件,以及自定义组件。
后台
使用云开发为我们提供的原生云端支持和微信服务支持。
云开发服务弱化后端和运维概念,无需搭建服务器,为我们快速开发迭代上线提供了可能。同时,我们使用平台提供的小程序端及服务端 API 进行小程序与数据库的数据交互,以实现核心功能。
功能方案
在云开发提供的JSON数据库中,我们建立多个集合来管理相应数据。
新建主题
在相应的主题表中新建记录,同时将该记录的“_id”添加到用户与主题的关系表(themeAndPerson)中,首页通过查询用户与主题的关系表(themeAndPerson)与主题表,在首页渲染出该用户参与的所有讨论主题。
多人协作
于主题详情页点击邀请好友的按钮,调用onShareAppMessage方法将本主题讨论页分享给好友,好友点击邀请链接后,将该讨论主题的“_id”添加进用户与主题的关系表(themeAndPerson)中相应位置,记录该用户被邀请进了本主题。
添加灵感
在主题的详情页中进行头脑风暴,用户点击添加灵感,灵感将更新至主题表中的该条主题记录的ideas字段中。
高效筛选
每条灵感都记录有相应的支持数,小程序端从数据库获取到所有灵感的支持数后进行灵感排序,支持数高的灵感将排在上方,最后视图层使用列表渲染将灵感显示到页面。
生成思维导图
从数据库获取主题与灵感的层级关系的相关数据,用canvas绘制思维导图。
此功能因时间关系尚未完成,后序将会持续完善。
遇到的问题
开发中也遇到了很多问题,不过主要都是因为这是第一次开发小程序,对小程序的一些API和组件不太熟悉,但这类问题都基本能通过查询资料得到解决。
更多的问题,都是出现在数据储存那方面的,这是我第一次前后端都自己做,当然了,云开发功能已经为我们减轻了很多的工作,但是因为没有后台开发的经验,这个学期也才刚接触数据库,我和我舍友对后台用于储存的表的设计都不太了解,因此也产生了很多问题。
- 这里记录一些开发时的一些卡得比较久的需求吧:
- 显示主题详情
- 显示灵感详情
将每条灵感储存在该主题或次级主题那条记录的字段内。 - 显示主题内二级主题的层级关系
在新建主题、二级主题、三级主题时就查询好相关参数,一级一级地保存在主题字段内,页面渲染时直接读取相关记录的相应字段进行显示。 - 邀请好友加入主题
调用onShareAppMessage方法将本主题讨论页分享给好友,传递主题的id号给好友,好友点击链接后把好友的openid存进本主题的参与人员的字段内。 - 对灵感点赞进行筛选(这个还有bug没解决)
这个在灵感列表页可以正常筛选,但是到了灵感详情页就出问题了,因为所用方法可能不太合理,不过其实只要做到“用户表态了一次之后把按钮键禁用”,这个问题就能解决了。
但是因为还不知道在数据库那边该如何记录每个用户跟每条灵感之间的关系,所以这个也没找到合适的解决方法。 - 表的设计
这是一个很大的问题,关乎到功能的实现,开发到最后一个星期,舍友放下了作业加入到开发中,一些我还没解决的问题,都牵涉到了数据的储存,部分需求如何实现,没有相关的实践经验,我们都是去问走后端的同学,然后讨论了好几次表的创建,还有记录和字段的设计,讨论出了我听着觉得可行的方案,就继续开发了。
整个开发过程真的十分不容易,数据存储是问题的主要部分。
提交
不知不觉,就到了5.31,即使功能还没开发完,为了不浪费大半个月的汗水,在提交截止的最后一天,整理好了文档,剪辑好了演示视频,最后也便交上去了。
5.31晚上支部开了欢送师兄师姐的组织生活会,提交的事情都交给舍友了。
作品提交后不久,得知有一组同学因为成员都不知道5.31晚上九点截止提交,最后超时了一分钟,没能提交成功。他们的作品主题是“梦”,我看过觉得也十分不错,没能交上去可惜了。
后来也看到了我们班的一组,作品跟我们的想法极为相似,他们的界面超级好看的!但是我们没有UI设计师,也就只能这样了。他们的演示视频还拍摄了一个小剧场,将产品的应用场景拍进去了,顿时感觉我们这个要凉了。。。。。
完善
完善过后继续补充
总结
那位做产品的师兄看到我们提交版的作品后,觉得很开心,因为我们一起将一个小程序一步一步地做了出来。但是我自己对这次这个作品的开发其实有很多不满意的地方。
首先需求没有全部实现就已经很让我难受了。其次没能找到合适的后台队员也是十分可惜的一件事,至今我都还没有与后端一起开发的经验呢,让人难受。
还是要说说这次这个项目总体情况的一个总结。
- 数据库设计方面
- 在开发过程中,数据存储的表的设计真的是一个严重影响到我们需求实现的一个点。数据存储和读取在这个小程序中起到了至关重要的作用,而我们都对那个不太熟,我还没有仔细地去了解那方面的内容就着急着手开发了,这也对后面开发到一半后的进度产生了影响。如果因为我前期数据库的设计不合理,分分钟要重构代码。。。幸好后面和舍友讨论某些需求的解决方案后,我本来设计好的表不怎么需要改,只是要增添表,还有增添一些帮助查询的联系表。
- 感觉以后在开发前,一点要先讨论好需求的解决方案,将所有需求的解决方案都有大致的了解和把握之后再着手开发,这样应该会更好,而不要像这次,着急开发,开发到一半,发现自己这样存数据的话就不知道怎么实现接下来要做的功能了。
- 开发进度方面
- 这次小程序制作过程中,我们专业的作业也多,但我们开发时也没有一个主要把握进度的人,这也是一个造成我们开发缓慢的一个原因。可能因为我们几人都比较佛??
个人原因
- 因为4月多那次住院,我最近几月都要频繁去不同科室复诊,那次住院也改变了我很多,让我真正意识到熬夜对身体造成的影响,现在于我来说,没有什么比身体更重要了,遇到什么不顺心的事情,情绪波动也没有以前大了,乐观面对,都会变好的啦。舍友也很体谅我了,因为台式电脑的问题,回家了的我就没法继续开发小程序了,这让时间变得更少,但是这没办法,身体重要。
展望
加油呀,希望下一次的项目开发能做得更好!
- 本文作者: Niccce
- 本文链接: https://niccce.github.io/2019/06/01/Brainstorming_miniprogram-Development_Summary/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!