Skip to content

第七章:技术需求

定义实现本产品所需的技术能力


7.1 概述

本章定义 BFM Pay 实现所需的技术能力需求,而非具体技术选型。任何满足这些需求的技术栈都可用于实现。


7.2 运行时环境需求

目标平台

平台优先级最低版本
iOS WebViewP0iOS 14+
Android WebViewP0Android 8+ (API 26)
现代浏览器P1Chrome 90+, Safari 14+, Firefox 90+
DWEB 容器P0Plaoc 最新版

运行时能力

能力必需性说明
JavaScript ES2020+MUSTasync/await, optional chaining, nullish coalescing
Web Crypto APIMUST加密操作
IndexedDBMUST本地持久化存储
Fetch APIMUST网络请求
Web WorkerSHOULD后台计算(密钥派生)
Service WorkerMAY离线支持

7.3 UI 框架需求

核心能力

需求说明
组件化支持可复用 UI 组件的定义和组合
响应式渲染状态变化自动触发 UI 更新
生命周期管理组件挂载/卸载钩子,资源清理
类型安全编译时类型检查(TypeScript)

性能指标

指标目标值
首屏渲染 (FCP)< 1.5s
可交互时间 (TTI)< 3s
包体积 (gzip)< 500KB(不含依赖)
60fps 滚动MUST

7.4 导航系统需求

核心能力

需求说明
栈式导航页面以栈结构管理,支持 push/pop
手势返回iOS 风格的边缘滑动返回
转场动画平滑的页面切换动画
深度链接URL 映射到特定页面和状态
状态保持返回时保持页面滚动位置和表单状态

导航模式

┌─────────────────────────────────────┐
│              TabBar                  │
│  ┌───────┐ ┌───────┐ ┌───────┐     │
│  │ Tab A │ │ Tab B │ │ Tab C │     │
│  └───┬───┘ └───┬───┘ └───┬───┘     │
│      │         │         │          │
│      ▼         ▼         ▼          │
│   Stack A   Stack B   Stack C       │  ← 每个 Tab 独立栈
│   ┌─────┐   ┌─────┐   ┌─────┐      │
│   │ A1  │   │ B1  │   │ C1  │      │
│   │ A2  │   │     │   │ C2  │      │
│   │ A3  │   │     │   │     │      │
│   └─────┘   └─────┘   └─────┘      │
└─────────────────────────────────────┘

7.5 状态管理需求

状态分类

类型特征生命周期
UI 状态组件内部,如 hover/focus组件生命周期
表单状态用户输入中的数据表单生命周期
客户端状态本地设置、钱包数据持久化
服务端状态从 API 获取的数据需缓存和同步

核心能力

需求说明
响应式更新状态变化自动通知订阅者
选择器订阅状态的特定部分,避免不必要的更新
持久化关键状态存储到本地
缓存策略服务端数据缓存、过期、重新验证
乐观更新立即更新 UI,后台同步服务端

服务端状态管理

┌─────────────────────────────────────────────────────┐
│                   Cache Layer                        │
├─────────────────────────────────────────────────────┤
│  Query Key        │ Data      │ State    │ StaleTime│
│  ['balance', addr]│ 100 BFM   │ fresh    │ 30s      │
│  ['txs', addr]    │ [...]     │ stale    │ 60s      │
│  ['price', 'BFM'] │ $0.15     │ fetching │ 10s      │
└─────────────────────────────────────────────────────┘

状态机:
  idle → fetching → success/error → stale → refetching → ...

7.6 表单处理需求

核心能力

需求说明
受控输入所有输入由状态驱动
验证同步验证 + 异步验证
错误处理字段级 + 表单级错误
提交管理提交中状态、防重复提交
类型安全表单值的完整类型推断

验证能力

类型时机示例
同步验证onChange/onBlur必填、格式、长度
异步验证onBlur/防抖地址格式、余额检查
表单级验证onSubmit跨字段校验

7.7 样式系统需求

核心能力

需求说明
组件化样式样式与组件绑定,避免冲突
主题系统支持浅色/深色主题切换
设计令牌颜色、间距、字体等统一变量
响应式适配不同屏幕尺寸
RTL 支持阿拉伯语等从右到左布局

设计令牌结构

tokens/
├── colors/
│   ├── semantic (primary, destructive, muted...)
│   └── palette (具体色值)
├── spacing/
│   └── scale (4, 8, 12, 16, 24, 32...)
├── typography/
│   ├── fontFamily
│   ├── fontSize
│   └── fontWeight
└── radius/
    └── scale (sm, md, lg, full)

7.8 国际化需求

核心能力

需求说明
翻译管理分离文本和代码
插值变量替换:欢迎,
复数不同数量的文本变体
日期/数字格式化本地化格式
RTL 布局阿拉伯语、希伯来语支持

支持语言

语言代码优先级
简体中文zh-CNP0
英语enP0
繁体中文zh-TWP1
日语jaP2
韩语koP2

7.9 安全需求

加密能力

能力算法/标准
助记词生成BIP39
密钥派生BIP44, SLIP-0010
签名Ed25519, secp256k1
对称加密AES-256-GCM
哈希SHA-256, Keccak-256
密钥派生函数PBKDF2, scrypt

存储安全

需求说明
加密存储敏感数据 AES 加密后存储
内存保护私钥使用后立即清除
无日志敏感数据不写入日志

7.10 测试需求

测试层级

层级覆盖范围目标覆盖率
单元测试工具函数、服务> 80%
组件测试UI 组件行为> 70%
集成测试模块交互关键路径
E2E 测试用户流程核心流程

测试能力需求

需求说明
组件渲染测试验证组件输出
用户交互模拟点击、输入、滚动
异步测试等待异步操作完成
Mock模拟网络请求和服务
快照测试UI 回归检测
视觉回归截图对比

7.11 构建和部署需求

构建产物

目标说明
Web SPA静态文件,可部署到 CDN
DWEB 包Plaoc 容器格式

构建优化

需求说明
代码分割按路由拆分,首屏最小化
Tree Shaking移除未使用代码
压缩JS/CSS 压缩
资源哈希文件名包含内容哈希,支持长期缓存

本章小结

本章定义了实现 BFM Pay 所需的技术能力,包括:

  • 运行时环境和平台兼容性
  • UI 框架、导航、状态管理的能力需求
  • 样式系统和国际化需求
  • 安全和加密能力
  • 测试和构建需求

具体技术选型可根据团队熟悉度和项目需求决定。


下一章

继续阅读 第八章:系统架构

Released under the MIT License.