mirror of
https://github.com/algerkong/AlgerMusicPlayer.git
synced 2026-04-14 23:11:00 +08:00
148 lines
5.5 KiB
Plaintext
148 lines
5.5 KiB
Plaintext
---
|
||
description: 这个规则是项目结构
|
||
globs:
|
||
alwaysApply: false
|
||
---
|
||
# AlgerMusicPlayer 项目结构
|
||
|
||
AlgerMusicPlayer 是一个基于 Electron、Vue 3、TypeScript 开发的网易云音乐第三方播放器。
|
||
|
||
## 技术栈
|
||
|
||
- **前端框架**:Vue 3 + TypeScript
|
||
- **UI 组件库**:naive-ui
|
||
- **样式框架**:Tailwind CSS
|
||
- **图标库**:remixicon
|
||
- **状态管理**:Pinia
|
||
- **工具库**:VueUse
|
||
- **构建工具**:Vite, electron-vite
|
||
- **打包工具**:electron-builder
|
||
- **国际化**:vue-i18n
|
||
- **HTTP 客户端**:axios
|
||
- **本地存储**:electron-store localstorage
|
||
- **网易云音乐 API**:netease-cloud-music-api
|
||
- **音乐解锁**:@unblockneteasemusic/server
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
AlgerMusicPlayer/
|
||
├── build/ # 构建相关文件
|
||
├── docs/ # 项目文档
|
||
├── node_modules/ # 依赖包
|
||
├── out/ # 构建输出目录
|
||
├── resources/ # 资源文件
|
||
├── src/ # 源代码
|
||
│ ├── i18n/ # 国际化配置
|
||
│ │ ├── lang/ # 语言包
|
||
│ │ ├── main.ts # 主进程国际化入口
|
||
│ │ └── renderer.ts # 渲染进程国际化入口
|
||
│ ├── main/ # Electron 主进程
|
||
│ │ ├── modules/ # 主进程模块
|
||
│ │ ├── index.ts # 主进程入口
|
||
│ │ ├── lyric.ts # 歌词处理
|
||
│ │ ├── server.ts # 服务器
|
||
│ │ ├── set.json # 设置
|
||
│ │ └── unblockMusic.ts # 音乐解锁
|
||
│ ├── preload/ # 预加载脚本
|
||
│ │ ├── index.ts # 预加载脚本入口
|
||
│ │ └── index.d.ts # 预加载脚本类型声明
|
||
│ └── renderer/ # Vue 渲染进程
|
||
│ ├── api/ # API 请求
|
||
│ ├── assets/ # 静态资源
|
||
│ ├── components/ # 组件
|
||
│ │ ├── common/ # 通用组件
|
||
│ │ ├── home/ # 首页组件
|
||
│ │ ├── lyric/ # 歌词组件
|
||
│ │ ├── settings/ # 设置组件
|
||
│ │ └── ... # 其他组件
|
||
│ ├── const/ # 常量定义
|
||
│ ├── directive/ # 自定义指令
|
||
│ ├── hooks/ # 自定义 Hooks
|
||
│ ├── layout/ # 布局组件
|
||
│ ├── router/ # 路由配置
|
||
│ ├── services/ # 服务
|
||
│ ├── store/ # Pinia 状态管理
|
||
│ │ ├── modules/ # Pinia 模块
|
||
│ │ └── index.ts # Pinia 入口
|
||
│ ├── type/ # 类型定义
|
||
│ ├── types/ # 更多类型定义
|
||
│ ├── utils/ # 工具函数
|
||
│ ├── views/ # 页面视图
|
||
│ ├── App.vue # 根组件
|
||
│ ├── index.css # 全局样式
|
||
│ ├── index.html # HTML 模板
|
||
│ ├── main.ts # 渲染进程入口
|
||
│ └── ... # 其他文件
|
||
├── .env.development # 开发环境变量
|
||
├── .env.development.local # 本地开发环境变量
|
||
├── .env.production.local # 本地生产环境变量
|
||
├── .eslintrc.cjs # ESLint 配置
|
||
├── .gitignore # Git 忽略文件
|
||
├── .prettierrc.yaml # Prettier 配置
|
||
├── electron-builder.yml # electron-builder 配置
|
||
├── electron.vite.config.ts # electron-vite 配置
|
||
├── package.json # 项目配置
|
||
├── postcss.config.js # PostCSS 配置
|
||
├── tailwind.config.js # Tailwind 配置
|
||
├── tsconfig.json # TypeScript 配置
|
||
├── tsconfig.node.json # 节点 TypeScript 配置
|
||
└── tsconfig.web.json # Web TypeScript 配置
|
||
```
|
||
|
||
## 主要组件说明
|
||
|
||
### 主进程 (src/main)
|
||
|
||
主进程负责创建窗口、处理系统层面的交互以及与渲染进程的通信。
|
||
|
||
- **index.ts**: 应用主入口,负责创建窗口和应用生命周期管理
|
||
- **lyric.ts**: 歌词解析和处理
|
||
- **unblockMusic.ts**: 网易云音乐解锁功能
|
||
- **server.ts**: 本地服务器
|
||
|
||
### 预加载脚本 (src/preload)
|
||
|
||
预加载脚本在渲染进程加载前执行,提供了渲染进程和主进程之间的桥接功能。
|
||
|
||
### 渲染进程 (src/renderer)
|
||
|
||
渲染进程是基于 Vue 3 的前端应用,负责 UI 渲染和用户交互。
|
||
|
||
- **components/**: 包含各种 UI 组件
|
||
- **common/**: 通用组件
|
||
- **home/**: 首页相关组件
|
||
- **lyric/**: 歌词显示组件
|
||
- **settings/**: 设置界面组件
|
||
- **MusicList.vue**: 音乐列表组件
|
||
- **MvPlayer.vue**: MV 播放器
|
||
- **EQControl.vue**: 均衡器控制
|
||
- **...**: 其他组件
|
||
|
||
- **store/**: Pinia 状态管理
|
||
- **modules/**: 各功能模块的状态管理
|
||
- **index.ts**: 状态管理入口
|
||
|
||
- **views/**: 页面视图组件
|
||
|
||
- **router/**: 路由配置
|
||
|
||
- **api/**: API 请求封装
|
||
|
||
- **utils/**: 工具函数
|
||
|
||
## 开发指南
|
||
|
||
### 命名约定
|
||
|
||
- 目录使用 kebab-case (如: components/auth-wizard)
|
||
- 组件文件名使用 PascalCase (如: AuthWizard.vue)
|
||
- 可组合式函数使用 camelCase (如: useAuthState.ts)
|
||
|
||
### 代码风格
|
||
|
||
- 使用 Composition API 和 `<script setup>` 语法
|
||
- 使用 TypeScript 类型系统
|
||
- 优先使用类型而非接口
|
||
- 避免使用枚举,使用 const 对象代替
|
||
- 使用 tailwind 实现响应式设计 |