Files
authenticator/memory-bank/techContext.md
2025-06-07 23:20:49 +08:00

45 lines
2.8 KiB
Markdown
Raw Permalink 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.

# 技术背景 (Tech Context)
## 1. 技术选型
- **构建与开发环境**:
- **Vite**: 选择 Vite 作为构建工具,因为它提供了极速的冷启动、即时的热模块替换 (HMR) 和优化的构建输出。
- **Node.js/npm**: 用于项目依赖管理和运行开发脚本。
- **前端框架**:
- **React**: 使用 React (v18+) 构建用户界面。其组件化架构非常适合管理 TOTP 列表和独立的 UI 元素。
- **React Hooks**: 将广泛使用 Hooks (如 `useState`, `useEffect`, `useCallback`) 来管理组件状态和生命周期。
- **样式**:
- **Tailwind CSS**: 一个功能优先的 CSS 框架,可以快速构建现代化的界面而无需离开 HTML (或 JSX)。
- **PostCSS**: 与 Tailwind CSS 配合使用,用于处理和转换 CSS。
- **状态管理**:
- **React Context API**: 对于这个规模的项目React 自带的 Context API 足以在组件间共享状态(例如 TOTP 列表),无需引入 Redux 或 MobX 等外部库。
- **数据持久化**:
- **IndexedDB**: 选择 IndexedDB 是因为它为客户端提供了强大的结构化数据存储能力,远胜于 localStorage非常适合存储包含多个字段的 TOTP 账户信息。
- **`idb` 库**: 为了简化 IndexedDB 的操作,将使用 `idb` 这个轻量级库,它提供了基于 Promise 的简洁 API。
- **TOTP 逻辑**:
- **`otpauth` 库**: 这是一个流行的、经过验证的库,用于生成和解析 TOTP/HOTP URL并能计算出一次性密码。我们将用它来处理核心的 TOTP 算法。其 `OTP.parse(uri)` 方法可以直接将 `otpauth://` URI 解析为一个包含所有参数的对象,极大地简化了 URI 的导入功能开发。
- **语言**:
- **TypeScript**: 推荐使用 TypeScript 来增强代码的健壮性和可维护性,提供类型安全。
## 2. 开发工作流
1. **初始化**: 使用 `npm create vite@latest` 命令创建项目模板。
2. **安装依赖**: 安装 React, Tailwind CSS, `idb`, `otpauth` 等核心依赖。
3. **配置**:
- 配置 `tailwind.config.js``postcss.config.js` 以启用 Tailwind CSS。
- 配置 `tsconfig.json` 以获得最佳的 TypeScript 开发体验。
4. **开发**: 运行 `npm run dev` 启动 Vite 开发服务器。
5. **构建**: 运行 `npm run build` 将项目打包为静态文件,用于部署。
## 3. 关键技术决策
- **不使用后端**: 这是项目的核心原则。所有逻辑和数据都在客户端处理,确保用户数据的隐私和所有权。
- **优先选择原生 Web API**: 在可能的情况下,优先使用浏览器原生 API (如 IndexedDB, Crypto API),仅在能显著简化开发时才引入第三方库。
- **模块化**: 代码将按功能进行模块化组织(例如,`services/idb.ts`, `hooks/useTotp.ts`, `components/TotpCard.tsx`),以保持代码库的清晰和可扩展性。