Spring Boot + 微信小程序初级实战——梦想打卡ing
前言
本文以开源微信小程序“梦想打卡ing”的全栈开发为基础,介绍了Nil Xuan的第一次全栈开发的经验和体会;(没错,就是自己提需求,自己写代码,自己为难自己的经验和体会);
项目简介
“梦想打卡ing”微信小程序提供中英文名言阅读、打卡收集并记录的功能;
每天打卡,每天为自己加油,为梦想喝彩!
微信搜索“梦想打卡ing”小程序即可体验;
功能介绍
- 首页阅读打卡功能:

点击为自己加油按钮即可打卡收集该卡片;每日只能点击收集一次;
- 打卡记录查询功能:


提供按月份显示打卡记录、点击具体打卡记录,显示当天的卡片;
- 收集卡片查询功能:

提供按月显示所收集的卡片,可左右滑动;
有用的站点
小程序功能点介绍
- 登录:通过wx.login返回的code,从后端获取当前小程序用户唯一的openid,并由此换取用户的userId;
- 模板:卡片在首页、收集页面、日历页面均有使用,所以使用小程序中的模板来实现重用;
- 网络回调:获取用户id以及相关打卡信息时的请求成功回调处理;
- 本地存储:用户的登录信息、打卡信息以及收集信息均在本地有所存储,保证每日更新的同时避免用户多次下载;
- 事件响应:日期选择器、按钮等控件的事件处理;
- 日历的生产和渲染:日历效果为纯js实现;
后端功能点介绍
- 打卡功能:记录用户的打卡信息,并提供查询接口;
- 卡片每日更新功能:通过定时任务实现,返回当天首页需要展示的卡片信息;
- 用户注册及登录功能:用户通过code获取openid后即算完成注册;用户通过本地存储的openid获取系统userId后即算实现登录功能;
- 卡片生成功能:名言和卡片解耦,分别提供对应生成接口,系统开发人员可通过该接口生成卡片;
技术栈介绍
- 前端以微信小程序原生开发为主;复杂功能点并不多,日历效果勉强算是一个难点,但是涉及多个页面的信息共享、信息依赖,逻辑处理流程较为复杂;
- 后端以Spring Boot为中心,使用Spring MVC、Spring Data JPA实现一个典型的Web应用;
- 整个项目实现了开发上的前后端分离,采用JSON为通讯格式;但是在API设计上并没有采用REST风格;
小感悟
“梦想打卡ing”项目落地的意义在于我第一次完整地走完了项目开发的流程:自己不再只是负责写一段代码或者一个模块,而是独立开发一个项目;自己并不是按照视频、书籍的示例代码完成一个项目,而是将自己的idea变为了可用的产品;
它的意义在于让我知道,没有文档约束的需求、接口是多么易变,而修改缺乏良好设计代码又是多么痛苦;
同时,在这个过程中,自己所需要关注的不再是一个功能点,而是一个应用,这就更需要有全局的眼光和设计。不论是功能点的划分、接口的设计,还是通讯协议的制定、代码组织结构的管理,都需要更高的要求——从服务提供者的角度来看,功能要实现、组织要合理;从服务使用者的角度来看,接口要简洁,结果要明确;而自己既是服务的提供者,也是服务的使用者;不同的角度看待同一事物,真的感觉不同,所谓“横看成岭侧成峰,远近高低各不同”。
项目开源地址
结语
“梦想打卡ing”是自己全栈开发的第一个实用型应用。正如题目所言——属于初级实战:技术难度、代码质量也不高。接下来,会努力的!

398

被折叠的 条评论
为什么被折叠?



