🛠️ 开发指南
欢迎来到 EchoMusic 开发文档。本节面向希望参与项目开发或了解内部实现的开发者。
技术栈
| 类别 | 技术 |
|---|---|
| 桌面框架 | Electron 42.3 |
| 前端框架 | Vue 3.5 + Composition API |
| 类型系统 | TypeScript 5.9 |
| 构建工具 | Vite 8 |
| 状态管理 | Pinia + pinia-plugin-persistedstate |
| UI 组件库 | Reka UI |
| CSS 框架 | Tailwind CSS v4.3 |
| 路由 | Vue Router |
| 包管理 | pnpm 9+ |
| 后端服务 | Node.js(内置本地服务,进程内直接调用) |
| 音频引擎 | echo-ffmpeg-player(内嵌 FFmpeg 解码 + SoundTouch,通过 Rust NAPI 进程内嵌入) |
| 原生扩展 | napi-rs(Rust → Node.js 原生模块) |
| 本地存储 | SQLite(通过 echo-sqlite-store addon) |
| 许可证 | GPL v3.0 |
核心架构
EchoMusic 采用 Electron 经典的双进程架构,通过 Rust NAPI 原生扩展(napi-rs)实现高性能音频播放:
┌─────────────────────────────────────────┐
│ Electron Shell │
│ ┌──────────────┐ ┌─────────────────┐ │
│ │ Main Process │ │ Renderer Process │ │
│ │ (Node.js) │ │ (Vue 3 + Vite)│ │
│ │ │ │ │ │
│ │ ┌─────────┐ │ │ ┌────────────┐ │ │
│ │ │ Server │ │ │ │ Pinia │ │ │
│ │ │ (API) │◄─┼──┼─►│ (Store) │ │ │
│ │ └─────────┘ │ │ └────────────┘ │ │
│ │ ┌─────────┐ │ │ ┌────────────┐ │ │
│ │ │ Native │ │ │ │ Tailwind │ │ │
│ │ │ Addons │ │ │ │ CSS v4 │ │ │
│ │ │ (Rust) │ │ │ └────────────┘ │ │
│ │ └─────────┘ │ │ │ │
│ └──────────────┘ └─────────────────┘ │
└─────────────────────────────────────────┘三个原生模块
| 模块 | 功能 | 技术 |
|---|---|---|
echo-ffmpeg-player | FFmpeg + SoundTouch 播放引擎封装,支持淡入淡出、EQ、音量均衡、倍速播放、设备切换、独占输出、实时频谱 | Rust + FFmpeg |
echo-media-controls | 系统媒体控制集成(macOS / Windows / Linux 原生 API) | Rust + OS API |
echo-sqlite-store | SQLite 本地持久化存储,负责设置、播放队列与状态快照 | Rust + rusqlite |