Files
barcode-scanner.jeffthecode…/memory-bank/systemPatterns.md
2025-06-06 18:18:31 +08:00

27 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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