前言
天气小程序产生于2022年年初,目的是用于验证自己是否有进入全栈开发(仅前后端)的能力。该项目从2022年1月12号正式启动,于2022年3月19日发布一阶段最终版本(1.1.9),总体耗时2个月零7天。从内容完整度以及界面友好程度来说,我给自己70分。
完成内容
- 和风天气API接入,可实现实时天气、实时空气、24小时天气预报、7天天气预报
- 使用echarts for wechat进行24小时天气预报展示
- 通过腾讯位置服务提供的微信小程序解决方案实现地图个性化展示(目前使用风格:白浅)
- 通过自建服务实现小程序静默登录
- 通过自建服务实现关注城市的持久化管理
- 实现天气分享功能,通过生成一张图片进行分享,可直接分享给朋友或群组
- 默认通过定位获取所在位置的天气数据
- 天气数据均通过服务端代理进行获取,从而避免相关key直接暴露在客户端
- 提供通过经纬度查询所处行政区划的服务,提供行政区划查询服务,皆可获取对应行政区划中心点基于边界数据,数据坐标为4326
- 服务通过github action自动化进行docker构建,并推送到阿里云镜像服务仓库,而后在阿里云ecs中直接拉取docker进行部署
- 图片服务则是通过nginx实现反向代理,图片由docker容器内服务创建,通过docker文件映射功能映射到云主机,再通过nginx可实现图片的访问
- 服务与图片均实现域名访问,且均提供ssl证书
不足
- 未实现天气地图可视化,即基于mapbox进行地图可视化(webview需要企业认证资质)
- 未提供坐标转换功能,因目前使用的是腾讯地图(gcj02,即从地图获取的数据均为gcj02),行政区划数据为4326(wgs84),目前是直接将4326作为gcj02进行使用(因为数据的粒度为区县,所以差异不会很大,除非在行政区边界处可能会出现行政区显示错误问题)
- 未完整实现小程序朋友圈分享功能,因该功能需要所分享页面的数据可直接获取,且分享页面小程序登录功能已被限制,所以目前无法直接提供数据获取服务(需要进行登录态校验,考虑到被攻击的可能)
- 未完成天气预警数据接入与提示功能
- 未完成数据推送、个人主页、图层管理功能
- 分享图片中未实现天气云图叠加功能,仅获取了所在位置范围的影像图与相关注记
- 服务端代码封装度不够,且DDD的认知不足,导致实践乱七八糟
内容
我计划将拂衣天气开发的完整过程通过文章的方式记录下来,下面是我对该整体内容的编写计划:
Name | Key Words | Summary |
---|---|---|
序章 | ||
前期调研 | ||
模型设计 | ||
开发环境准备 | ||
行政区划数据准备 | ||
小程序静默登陆实现 | ||
小程序开发(一) | 说明主页布局构建,组件拆分情况,实现地图加载以及定位 | |
小程序开发(二) | 实现上下滑动功能开发,以及左右滑动组件封装 | |
小程序开发(三) | 实时天气栏卡片、文字描述、底部7天天气预报以及Footer部分开发 | |
小程序开发(四) | 完成echarts组件封装 | |
天气代理服务开发 | 提供实时天气、实时空气质量、24小时天气预报、7天天气预报代理服务开发 | |
小程序开发(五) | 完成天气部分API对接 | |
行政区划服务开发 | 提供行政区划查询服务 | |
关注城市服务开发 | 提供对城市的关注与取消关注能力 | |
小程序开发(六) | 完成天气图片分享功能 | |
小程序开发(七) | 完成城市选择页面开发与数据API对接 | |
Github Action服务发布 | ||
小程序服务发布 | ||
终篇 |
参考
注:拂衣天气小程序的界面设计与交互设计主要参考和风天气APP。当前所述拂衣天气小程序的开发主要用于学习。
致敬和风天气!