问题域/PD-482

Electron 混合存储架构

Electron Hybrid Storage Architecture

Electron 文件系统与浏览器 localStorage 的双模存储,通过 preload bridge 暴露 API

子问题

1.Electron preload安全暴露API

2.文件系统与localStorage双模适配

3.图片本地持久化与base64转换

4.存储路径配置与数据迁移

5.多项目切换时 Zustand rehydrate 竞态导致数据覆盖

6.三存储源(localStorage/IndexedDB/fs)数据冲突与迁移方向判断

7.共享资源与项目专属资源的拆分存储与合并加载

8.自定义协议注册实现本地媒体文件的安全加载

各项目的解法1 solutions

Signals

横向对比

维度moyin-creator
桥接机制contextBridge 四命名空间(fileStorage/imageStorage/storageManager/electronAPI)
存储后端Node.js fs 文件系统,key 映射为 JSON 文件路径
环境检测运行时 isElectron() 检测 window.fileStorage 存在性
降级策略Electron 不可用时透明降级到 localStorage
数据迁移三源比较(localStorage/IndexedDB/fs)+ hasRichData 语义判断迁移方向
项目隔离_p/{projectId}/ 目录级物理隔离 + _shared/ 跨项目共享
切换协议4 步安全切换:更新路由 → rehydrate → 同步内部 ID → ensureProject
导入回滚tmpdir 临时备份 + try/catch 自动回滚

最佳实践

1.contextBridge安全暴露最小API集

2.运行时检测isElectron自动切换存储后端

3.从持久化数据中提取 projectId 而非依赖全局状态防止竞态写入

4.迁移前等待 project-store rehydration 完成再路由读写

5.导入数据前创建 tmpdir 备份支持失败自动回滚

6.hasRichData 语义判断数据丰富度而非简单比较大小