暑期实践:“林里寻物”小程序
前言
本次暑期社会实践,我加入了北林寻物项目组,对“林里寻物V1.0”小程序进行了内容的丰富、修改与页面重构,编写了“林里寻物V2.0”小程序。虽然身为计算机相关专业的学生,但我还尚未接触过微信小程序的开发,而且我没有团队项目开发的相关经历。所以这次暑期社会实践的经历对我来说可以算是一次全新的体验。
前期准备
为了提升自己的微信小程序的开发编程能力与方便在实践中直接上手操作,我参考了各种文献与资料,在项目启动之前便学习了微信小程序开发的相关知识。由于在专业课上已经学过WEB前端开发,所以对微信小程序的学习并不算很难。在微信开发者工具中,wxml、wxss和js分别对应了WEB前端开发里的html、css和js,而json相当于页面配置,决定页面文件的路径和窗口表现、设置网络超时时间、设置多tab等方面。而相比于WEB前端开发,小程序的优点在于开发门槛低、难度相对较小,以及克服了不同系统或手机版本的不兼容性。并且可以通过小程序自身封装好的一些组件和API,再配上Lin UI中已经封装好的组件进行开发,同时微信小程序有官方的参考文献,使得微信小程序的开发更加容易上手。所以对我而言,微信小程序开发的代码编写并不算一个难点。
对我真正的难点在于团队项目的开发。我们团队采用的是微信开发者的代码管理作为软件项目的托管平台,因此便要求团队成员掌握Git的相关知识,以便于多人开发。由于我没有团队项目开发的经历,与团队成员一起开发让我有些不适应。项目启动前期,我经常打开微信开发者工具直接编写代码,所以导致了我因没有推送到远程仓库和从远程仓库拉取最新的记录而犯下不少错误。痛定思痛,我专门学习了一些Linux操作系统的命令,以便于对Git的使用。皇天不负有心人,随着项目的进行,我也养成了先拉取再写代码的好习惯。
遇到的问题
当然,在开发实战中,我也遇到许多问题。
最头疼的莫过于JavaScript的异步问题。作为一名ACM集训队的成员,早已习惯了C++的编程模式,更不用担心什么异步问题,而JavaScript的异步问题让我十分头疼——例如,使用用canvas做的海报时图像总是不渲染到前端、好人榜的头像时有时无、总是有些数据调用不了、排序时未按所需要求排序。为此,我学习了async、await等将异步转化为同步的方法。async函数返回的是一个Promise对象。async函数(包含函数语句、函数表达式)会返回一个Promise对象,如果在函数中return一个直接量,async会把这个直接量通过Promise.resolve()封装成Promise对象。而await表达式会暂停当前async function的执行,等待Promise处理完成若Promise正常处理,其处理结果作为await表达式的值,继续执行async function。
学习的过程中我时常会有疑惑,但我并没有因此放弃,而是自己编写了几个简单的小程序,以便于自己更容易理解,毕竟实践出真知。回到“林里寻物”小程序的编写中,我便发现其实异步问题没有我想象中的那么难。随着编译通过,彻底解决了这些异步问题时,那种骄傲与激动感油然而生。
此外,一些BUG的出现也让我头疼不已。
1、使用canvas做海报时遮罩层会出现穿模问题:需要将遮罩层的catchtouchmove属性设置为true。否则即使出现海报,依然能够滑动页面。
2、下拉刷新时刷新页面无法停止:对于下拉刷新,微信设置了下拉事件 onPullDownRefresh,在事件对应的函数中请求一次最新数据即可,如果默认动画没有显示,可能是和窗口背景色一样,重新将提示动画设置为另一种颜色模式即可。数据异步请求结束之后要调用动画结束函数wx.stopPullDownRefresh,否则动画会一直出现不停下。
3、Lin UI组件无法使用:一些Lin UI组件需要在所在的wxml文件下加上特定语句。例如要启动标签时要加上<l-action-sheet bind:linitemtap=“linItemtap”/>,否则无法启动。
4、·搜索页面未输入内容点击证分类目录会显示全部的物品:未考虑所有的字符串都包含””,因此搜索””时会出现所有内容。需要对搜索””时特殊判断一下。即若搜索的内容为””,则continue。
……
虽然不是什么严重的BUG,但还是告诫我编写程序时不能过于随意,要大胆同样也要谨慎,微小的细节也不能忽略。
结语
林里寻物,是我第一次参与团队项目开发。通过本次社会实践,让我对微信小程序的开发有了重新的认识,也让我体验到团队合作开发项目的乐趣,同时,也增长了我对编程的喜爱。总之,这是一次收获颇丰的暑期社会实践,让我对以后相关方面的工作有了一定的了解,受益匪浅。
下图为“林里寻物”二维码,欢迎各位大佬莅临指导!