Skip to content

项目架构

📖 项目概述

MioSub 是一款 AI 驱动的视频字幕生成、翻译与润色工具。采用 React + Vite + Electron 技术栈构建,支持 Web 端和桌面客户端双端部署。

  • 技术栈: React 19, Vite 6, Electron 39, TypeScript
  • AI 引擎: Google Gemini (翻译/润色), OpenAI Whisper (语音识别)

DeepWiki项目详细解析:https://deepwiki.com/corvo007/Gemini-Subtitle-Pro


🏗️ 技术栈架构

技术栈分层图

依赖版本概览

类别依赖包版本用途
核心框架React19.2UI 框架
Vite6.2构建工具
TypeScript5.8类型系统
Electron39桌面容器
AI SDK@google/genaiLatestGemini API
openaiLatestWhisper API
onnxruntime-web1.23VAD 推理
音视频处理@ricky0123/vad-web0.0.30Silero VAD 封装
fluent-ffmpeg2.1FFmpeg 控制
国际化i18next25.7国际化核心
react-i18next16.5React 绑定
渲染assjs0.1.4ASS 字幕渲染
样式TailwindCSS4.1原子化 CSS
Lucide React0.554图标库
工具库clsx / tw-mergeLatest样式合并

📏 代码规范与工程化

路径别名 (Path Aliases)

本项目在 srcelectron 目录下全面使用路径别名。除同级文件引用外(推荐统一使用别名),禁止使用相对路径(如 ../../)进行跨层级模块引用。

  • @/* -> src/* (核心源代码)
  • @components/* -> src/components/*
  • @hooks/* -> src/hooks/*
  • @services/* -> src/services/*
  • @utils/* -> src/utils/*
  • @types/* -> src/types/*
  • @lib/* -> src/lib/* (新增)
  • @electron/* -> electron/* (Electron 主进程代码)

目录组织原则

  • 就近原则 (Co-location):仅在特定模块内部使用的工具函数或组件,应放置在该模块的 utilsshared 子目录下,而不是提升到全局。
    • 例如,src/components/endToEnd/wizard/utils/validation.ts 仅服务于向导模块。
  • 关注点分离
    • src/utils: 全局通用的、纯 JavaScript/UI 辅助函数。
    • src/services/utils: 基础设施、日志、系统级工具。

Released under the MIT License.