






















项目地址: https://github.com/xiaobili/wallhaven
一款优雅的跨平台桌面壁纸浏览与下载应用
基于 Electron + Vue 3 + TypeScript 构建
版本亮点 • 功能特性 • 技术栈 • 快速开始 • 项目结构
该项目参考了 leoFitz1024 的 Wallhaven 项目,并进行了大量优化和扩展。RESPECT
本项目使用 AI 辅助开发工具实现。
本项目已完成全面架构重构,在保持用户体验不变的前提下,实现了代码架构的大幅升级:
any 类型,100% TypeScript 覆盖Wallhaven 是一个功能丰富的跨平台桌面壁纸浏览和管理应用,提供:

支持多种筛选条件:





提供丰富的个性化配置选项:
下载设置
API 设置
桌面设置
缓存管理
| 类别 | 技术 | 版本 |
|---|---|---|
| 桌面框架 | Electron | v41.2.2 |
| 前端框架 | Vue 3 (Composition API) | v3.5.32 |
| 构建工具 | electron-vite / Vite | v5.0.0 / v7.3.2 |
| 语言 | TypeScript | v6.0.0 |
| 状态管理 | Pinia | v3.0.4 |
| 路由 | Vue Router | v5.0.4 |
| HTTP 客户端 | Axios | v1.15.0 |
| 图片处理 | Sharp | v0.34.5 |
| 打包工具 | electron-builder | v26.8.1 |
^20.19.0 或 >=22.12.0npm install
# 启动 Electron 桌面应用(支持热重载)
npm run dev
# 仅在浏览器中预览
npm run preview
# Windows
npm run build:win
# macOS
npm run build:mac
# Linux
npm run build:linux
构建产物将输出到 release/ 目录。
# 类型检查
npm run type-check
# 代码检查
npm run lint
# 代码格式化
npm run format
# 单元测试
npm run test:unit
wallhaven/
├── electron/ # Electron 主进程代码
│ ├── main/ # 主进程
│ │ ├── index.ts # 应用入口、窗口管理
│ │ └── ipc/ # IPC 处理器模块( 8 个独立 handler )
│ │ ├── base.ts # 基础类型和工具函数
│ │ ├── file.handler.ts # 文件操作
│ │ ├── download.handler.ts # 下载管理
│ │ ├── settings.handler.ts # 设置存储
│ │ ├── wallpaper.handler.ts # 壁纸设置
│ │ ├── window.handler.ts # 窗口控制
│ │ ├── cache.handler.ts # 缓存管理
│ │ └── api.handler.ts # API 代理
│ └── preload/ # 预加载脚本
│ └── index.ts # 暴露安全 API 给渲染进程
│
├── src/ # Vue 渲染进程代码
│ ├── clients/ # 客户端层 (Electron API 封装)
│ │ ├── ElectronClient.ts # Electron API 封装
│ │ └── ApiClient.ts # HTTP 请求封装
│ ├── composables/ # 组合式函数层
│ │ ├── core/ # 核心功能 (useAlert 等)
│ │ ├── download/ # 下载相关
│ │ ├── favorites/ # 收藏相关
│ │ ├── local/ # 本地壁纸相关
│ │ ├── settings/ # 设置相关
│ │ └── wallpaper/ # 壁纸相关
│ ├── components/ # Vue 组件
│ ├── errors/ # 自定义错误类
│ ├── repositories/ # 数据仓库层
│ ├── router/ # 路由配置
│ ├── services/ # 服务层
│ ├── stores/ # Pinia 状态管理
│ ├── types/ # TypeScript 类型定义
│ ├── utils/ # 工具函数
│ └── views/ # 页面组件
│ ├── OnlineWallpaper.vue # 在线壁纸页
│ ├── LocalWallpaper.vue # 本地壁纸页
│ ├── DownloadWallpaper.vue # 下载中心页
│ ├── FavoritesPage.vue # 收藏页
│ └── SettingPage.vue # 设置页
│
├── resources/ # 应用资源(图标等)
├── scripts/ # 构建脚本
└── .planning/ # 项目规划文档
项目采用清晰的分层架构,确保代码的可维护性和可测试性:
┌─────────────────────────────────────────────────────────┐
│ View Layer │
│ (OnlineWallpaper, LocalWallpaper, DownloadWallpaper, │
│ FavoritesPage, SettingPage) │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Composable Layer │
│ (useAlert, useWallpaperList, useDownload, useSettings,│
│ useFavorites, useCollections) │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Service Layer │
│ (WallpaperService, DownloadService, SettingsService, │
│ FavoritesService, CollectionsService) │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Repository Layer │
│ (WallpaperRepository, DownloadRepository, │
│ SettingsRepository, FavoritesRepository) │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Client Layer │
│ (ElectronClient, ApiClient) │
└─────────────────────────────────────────────────────────┘
| 版本 | 发布日期 | 主要功能 |
|---|---|---|
| v2.6 | 2026-04-29 | 设置页缓存优化 |
| v2.5 | 2026-04-29 | 壁纸收藏功能 |
| v2.4 | 2026-04-27 | ImagePreview 导航功能 |
| v2.3 | 2026-04-27 | ElectronAPI 分层重构 |
| v2.2 | 2026-04-27 | Store 分层迁移 |
| v2.1 | 2026-04-27 | 下载断点续传 |
| v2.0 | 2026-04-26 | 架构重构 |
欢迎提交 Issue 和 Pull Request !
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)本项目采用 MIT 许可证 - 详见 LICENSE 文件
Made with ❤️ by BillyJR
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。