Skip to content

🛠️ 开发指南

欢迎来到 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-playerFFmpeg + SoundTouch 播放引擎封装,支持淡入淡出、EQ、音量均衡、倍速播放、设备切换、独占输出、实时频谱Rust + FFmpeg
echo-media-controls系统媒体控制集成(macOS / Windows / Linux 原生 API)Rust + OS API
echo-sqlite-storeSQLite 本地持久化存储,负责设置、播放队列与状态快照Rust + rusqlite

文档索引