从零开始实现QSL卡片插件 | 我的业余无线电数字化之旅
· 阅读需 24 分钟
一、需求分析与业务场景
1.1 业务场景梳理
- 传统 QSL 卡片:记录双方呼号、时间、频率、模式、信号报告等基础通联信息。
- 眼球通联卡片:用于线下见面交流的确认与记录。
- 比赛日志卡片:在竞赛环境中记录得分、交换信息、成绩等结构化数据。
- 卫星通联卡片:涉及卫星名称、上下行频率、轨道参数等专业数据。
1.2 功能需求清单
- 多类型卡片支持:涵盖上述四种主要场景,预留扩展能力。
- 数据可视化与检索:支持结构化展示、多维度筛选与实时搜索。
- 历史数据迁移:兼容旧有数据格式,实现平滑升级。
- 国际化与国家识别:自动识别通联国家/地区并展示对应国旗与元数据。
- 响应式与主题化:适配多端屏幕,支持明暗主题切换。
- 用户体验优化:交互流畅、视觉一致、操作符合直觉。
二、技术选型与架构设计
2.1 技术栈决策
- 前端框架:React 18,基于函数组件与 Hooks 构建,提升组件复用性与状态管理效率。
- 样式方案:CSS Modules + Material 3 设计系统,实现样式隔离与现代化视觉语言。
- 工具链:ES6+ 语法,配合 Vite 构建工具提升开发体验与打包性能。
- 数据管理:本地状态结合 Context API,满足组件间状态共享需求。
2.2 系统架构图(模块化设计)
QSLCard Plugin
├── 展示层 (Presentation)
│ ├── QSLCard (主容器组件)
│ ├── QSLList (列表布局)
│ └── SearchBar (搜索与过滤)
├── 卡片类型层 (Card Types)
│ ├── StandardQSLCard
│ ├── EyeBallCard
│ ├── ContestCard
│ └── SatelliteCard
├── 工具服务层 (Utilities)
│ ├── dataMigration (数据迁移引擎)
│ └── countryUtils (国家识别服务)
└── 样式资源层 (Styles)
├── 主题变量 (CSS Custom Properties)
└── 卡片类型样式模块
