跳到主要内容

1 篇博文 含有标签「QSL卡片」

查看所有标签

从零开始实现QSL卡片插件 | 我的业余无线电数字化之旅

· 阅读需 24 分钟

一、需求分析与业务场景

1.1 业务场景梳理

  • 传统 QSL 卡片:记录双方呼号、时间、频率、模式、信号报告等基础通联信息。
  • 眼球通联卡片:用于线下见面交流的确认与记录。
  • 比赛日志卡片:在竞赛环境中记录得分、交换信息、成绩等结构化数据。
  • 卫星通联卡片:涉及卫星名称、上下行频率、轨道参数等专业数据。

1.2 功能需求清单

  1. 多类型卡片支持:涵盖上述四种主要场景,预留扩展能力。
  2. 数据可视化与检索:支持结构化展示、多维度筛选与实时搜索。
  3. 历史数据迁移:兼容旧有数据格式,实现平滑升级。
  4. 国际化与国家识别:自动识别通联国家/地区并展示对应国旗与元数据。
  5. 响应式与主题化:适配多端屏幕,支持明暗主题切换。
  6. 用户体验优化:交互流畅、视觉一致、操作符合直觉。

二、技术选型与架构设计

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)
└── 卡片类型样式模块