Skip to content

Repository files navigation

EPUB 阅读器

基于 Wails + Vue 3 + TypeScript + Go 构建的桌面 EPUB 阅读器。

使用DeepSeek为辅助开发。

Wails Vue TypeScript Go


功能特性

  • 书架管理 — 导入、删除 EPUB 书籍,自动展示封面和进度
  • 分章阅读 — 逐章阅读,支持左右侧按钮切换、键盘快捷键
  • 精确进度追踪 — 按章节独立保存滚动位置,切换后自动恢复
  • 总进度显示 — 基于内容长度的精确百分比,实时更新
  • 目录导航 — 侧边栏目录面板,快速跳转任意章节
  • 内部链接跳转 — EPUB 内 <a> 链接自动识别,跨章节跳转保留独立进度
  • 阅读设置 — 字体大小、行高、字体族、页面宽度、主题(亮色/护眼/暗色)
  • 主题切换 — Light / Sepia(护眼)/ Dark 三种主题
  • 进度持久化 — 关闭应用后自动保存进度,下次打开自动恢复

技术栈

技术
桌面框架 Wails v2
前端框架 Vue 3 (Composition API + <script setup>)
构建工具 Vite
类型系统 TypeScript
UI 组件 Element Plus
状态管理 Pinia
路由 Vue Router
后端 Go (EPUB 解析、进度存储、设置管理)

项目结构

epubReader/
├── main.go                    # Wails 应用入口
├── app.go                     # Go 后端绑定 (API 导出给前端)
├── go.mod / go.sum            # Go 模块依赖
├── wails.json                 # Wails 项目配置
├── package.json               # 前端依赖 (根目录)
├── backend/
│   ├── epub/
│   │   ├── parser.go          # EPUB 解析器 (解压、解析 OPF/TOC)
│   │   └── structure.go       # 数据结构定义
│   └── service/
│       └── book_service.go    # 书籍服务 (书架、进度、设置持久化)
├── frontend/
│   ├── index.html             # Vite 入口 HTML
│   ├── vite.config.ts         # Vite 配置
│   ├── tsconfig.json          # TypeScript 配置
│   ├── package.json           # 前端依赖
│   └── src/
│       ├── main.ts            # Vue 应用入口
│       ├── App.vue            # 根组件
│       ├── router/index.ts    # 路由配置
│       ├── types/index.ts     # TypeScript 类型定义
│       ├── store/book.ts      # Pinia 状态管理 (核心逻辑)
│       ├── pages/
│       │   ├── Shelf.vue      # 书架页面
│       │   └── Reader.vue     # 阅读器页面
│       └── components/
│           ├── Toolbar.vue    # 顶栏 (返回、进度、目录、设置)
│           ├── TocPanel.vue   # 目录侧边栏
│           └── SettingsPanel.vue  # 设置面板
└── build/
    └── bin/
        └── epubReader.exe     # 构建产物

快速开始

前置条件

go install github.com/wailsapp/wails/v2/cmd/wails@latest

一定要解压两个node_modules.rar!!!

开发模式

# 克隆项目后
cd epubReader

# 启动热重载开发模式
wails dev

前端内容修改会自动热更新,Go 后端修改需要手动重编译。

构建发布版

wails build -o epubReader.exe

产物位于 build/bin/epubReader.exe,为单文件可执行程序,无需额外运行时。


使用说明

导入书籍

  1. 打开应用,进入书架页面
  2. 在书架页面点击 「+导入书籍」 按钮
  3. 选择 .epub 文件,书籍会自动添加到书架并解析章节
  4. 点击书籍封面即可开始阅读

阅读操作

操作 方式
下一章 点击右侧 按钮 / 键盘 / 空格
上一章 点击左侧 按钮 / 键盘
打开目录 点击顶栏 「目录」 按钮
切换设置 点击顶栏 「设置」 按钮
返回书架 点击顶栏 「书架」 按钮
内部链接 点击内容中的 EPUB 内部链接会自动跳转
自动保存 滚动停止 2 秒后自动保存进度

进度机制

  • 每个章节独立记录滚动位置(底部工具栏显示每章编号)
  • 阅读总进度根据各章节实际已读比例加权计算
  • 关闭应用或切换章节时自动持久化到本地存储
  • 再次打开书籍自动恢复到上次的章节和滚动位置

阅读设置

设置面板可调整:

  • 字体大小 — 默认 18px
  • 行高 — 默认 1.8
  • 字体族 — 默认 Noto Serif SC
  • 页面宽度 — 默认 800px
  • 主题 — Light / Sepia / Dark

依赖

Go 依赖

  • wailsapp/wails/v2 — 桌面应用框架
  • 标准库 archive/zip, encoding/xml, net/http — EPUB 解析

前端依赖

  • vue 3.5 — 前端框架
  • vue-router 4.5 — 路由
  • pinia 2.3 — 状态管理
  • element-plus 2.9 — UI 组件库
  • @element-plus/icons-vue — 图标库
  • typescript 5.7 — 类型检查
  • vite 6.0 — 构建工具

许可证

MIT

About

使用DeepSeek为辅助开发的纯epub阅读器

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages