1.7 KiB
1.7 KiB
系统模式
架构
- 前端架构: 单页应用(SPA),使用 React 构建,具有两个主要视图(页面)。
- 视图管理:
LiveScannerView
: 实时扫描页面,负责摄像头访问和条形码检测。HistoryView
: 历史记录页面,负责展示和管理已保存的数据。- 使用 React 的条件渲染或一个轻量级的路由库来管理这两个视图之间的切换。
- 数据持久化:
IndexedDB
: 用于在客户端存储用户的扫描历史、标签等信息。将创建一个DBHelper
或类似的服务来封装数据库操作(增、删、改、查)。
组件模型
应用将由以下核心组件构成:
App
: 主组件,管理整体布局、当前激活的视图和底部导航栏的状态。BottomNav
: 底部导航组件,用于在LiveScannerView
和HistoryView
之间切换。Scanner
: 封装 Quagga2 逻辑,处理摄像头视频流,并在canvas
上绘制结果。HistoryList
: 显示保存在 IndexedDB 中的条形码列表。TagManager
: 用于添加、删除和筛选标签的组件。
关键技术决策
- 状态管理:
- 全局状态: 对于当前激活的视图(实时/历史),将使用 React Context 或一个简单的状态管理库来管理。
- 本地状态: 组件内部状态(如表单输入)将使用
useState
和useEffect
。
- 样式: TailwindCSS 将用于快速、实用的样式设计,确保响应式布局。
- 条码扫描: Quagga2 因其在网络环境中的灵活性和易于集成而被选中。
- 数据库交互: 所有 IndexedDB 操作将被抽象到一个单独的模块中,以保持业务逻辑的清晰和可维护性。