前言

天气小程序产生于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。当前所述拂衣天气小程序的开发主要用于学习。

致敬和风天气!

和风天气