Readest 评测:用 Next.js 和 Tauri 重写 Foliate 的开源阅读器
Readest 是一款功能丰富的现代电子书阅读器,专为狂热读者而设计,提供可靠的跨平台访问、强大的工具和直观的界面,以提升您的阅读体验。
秒懂
- 它是什么?
- Readest 是一个基于 Next.js 16 和 Tauri v2 的开源电子书阅读器,支持多平台和多种格式。本文分析其架构、功能、限制和适用场景,帮助工程师决定是否采用。
- 适合谁用?
- Readest 适合需要跨平台一致体验的 avid reader,尤其是已经在用 Foliate 或 KOReader 的用户,因为它提供了现代界面和同步能力。但如果你只读 EPUB 且不需要移动端,Foliate 更轻量。
- 能商用吗?
- 可以,但条件严格。AGPL-3.0 是网络 copyleft 许可证:如果别人通过网络使用你修改过的版本(例如作为托管服务),你必须以同一许可证向他们提供源代码。
- 还在维护吗?
- 在维护。仓库最近一次提交在 1 天前。
- 用什么语言写的?
- 主要是 TypeScript(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决什么问题,谁需要它
Readest 面向的是那些在多个设备上阅读电子书,却受限于平台碎片化的用户。大多数阅读器要么只支持桌面,要么只支持移动端,要么格式支持有限。Readest 的目标是提供一个统一的阅读体验,覆盖 macOS、Windows、Linux、Android、iOS 和 Web。它不是一个简单的阅读器,而是一个重写版,基于 Foliate 的遗产,但用现代技术栈重建。对于工程师来说,它解决了两个问题:一是如何用一套代码库覆盖所有平台,二是如何保持阅读器的可扩展性。它的目标用户是 avid reader,即那些需要注释、字典、翻译和阅读统计的深度读者,而不是偶尔翻翻 PDF 的人。根据 README,它支持 EPUB、PDF、MOBI、KF8 (AZW3)、FB2、CBZ、TXT 和 Markdown,这覆盖了大多数常见格式,但缺少一些专业格式如 DJVU,这是需要注意的。
技术栈和架构:Next.js 16 与 Tauri v2 的组合
Readest 的架构核心是 Next.js 16 和 Tauri v2。Next.js 负责 Web 前端和逻辑,Tauri 负责桌面和移动端的原生外壳。这意味着大部分代码是 TypeScript,运行在 WebView 中,而 Tauri 提供文件系统访问、窗口管理等原生能力。这种设计的优势是开发效率高,因为 Web 和桌面共享同一套 UI 逻辑。但代价是性能受限于 WebView,对于大型 PDF 或复杂排版,可能不如原生渲染引擎。README 没有提供性能基准,所以无法确认实际表现。另一个关键点是,它支持 Web 版本,这意味着你可以通过浏览器访问 readest.com 上的 Web App,而桌面版和移动版则通过 Tauri 打包。这种架构让同步功能成为可能,因为所有平台共享同一个数据层。然而,Web 版本和本地版本之间的文件处理方式可能不同,例如本地文件系统访问在 Web 上受限,这需要开发者注意。
功能亮点:从阅读模式到同步的完整工具链
Readest 的功能列表相当长,但有几个值得深入。首先是多格式支持,包括 EPUB、PDF、MOBI 等,这得益于 Foliate 的遗产。其次是阅读模式,支持滚动和分页,这是基本需求。更突出的是 Parallel Read,即分屏同时阅读两本书,这对研究或对比阅读很有用。注释和高亮支持即时模式,减少点击次数。字典功能内置了多个来源,也支持导入本地词典包,包括 Yomitan ZIP 和 RDICT 格式,这对日语学习者尤其重要。翻译功能集成了 DeepL 和 Yandex,可以翻译句子或整本书。TTS 和有声书支持,以及 Read-Along Narration,后者可以播放 EPUB 3 Media Overlays,或与本地 MP3/M4A/M4B 文件配对,实现逐句高亮。这些功能组合起来,使 Readest 不仅是一个阅读器,而是一个阅读工作台。但要注意,这些功能的实现细节在 README 中并未深入,例如 TTS 的语音质量或 Media Overlays 的兼容性,需要实际测试。
运行方式:从源码构建到安装
要运行 Readest,首先需要从 GitHub 仓库克隆代码。README 提供了 Getting Started 部分,但内容被截断,所以具体命令不完整。根据项目类型,可以推断需要 Node.js 和 Rust 环境,因为 Tauri 依赖 Rust。典型步骤是:安装 Node.js 和 pnpm 或 npm,然后运行 pnpm install 安装依赖,接着运行 pnpm tauri dev 启动开发模式,或者 pnpm tauri build 构建生产版本。对于移动端,需要额外的 Android SDK 或 Xcode 配置。配置方面,项目可能使用 tauri.conf.json 来定义窗口和权限,但 README 没有列出具体键。对于普通用户,最简单的方式是从官网或应用商店下载预构建的安装包,例如 macOS 和 iOS 通过 App Store,Android 通过 Google Play。Web 版本直接访问 readest.com。如果你只想试用,建议先用 Web 版,因为它无需安装。但要注意,Web 版可能不支持所有功能,例如本地文件关联或深度文件系统访问。
限制和失败模式:DRM、格式和性能的边界
Readest 明确不支持 DRM 保护的电子书,这意味着你不能阅读从商业商店购买的受保护 EPUB 或 PDF。这是一个重要的限制,因为许多用户依赖 Kindle 或 Kobo 的 DRM 内容。另一个限制是性能:由于基于 WebView,渲染大型 PDF 或复杂排版的 EPUB 可能不如原生引擎流畅,尽管 README 没有提供数据,但这是 WebView 架构的固有特性。此外,格式支持虽然广泛,但缺少一些常见格式如 DJVU 或 CBR,这可能影响漫画读者。同步功能依赖云端,这意味着需要网络连接,并且可能涉及隐私问题,因为你的阅读数据会经过服务器。最后,项目仍在快速迭代,v0.12.6 是最近的版本,但 API 和配置可能不稳定,升级时可能需要调整。如果遇到问题,README 提供了 Troubleshooting 部分,但内容被截断,所以具体解决方案未知。
替代方案:Foliate 和 KOReader 的差异
Readest 是 Foliate 的重写,所以 Foliate 是最直接的替代品。Foliate 是一个轻量级的 Linux 阅读器,使用 GTK 和 WebKit,专注于桌面,没有移动端或同步功能。它的优势是简单、快速,资源占用低,适合只在一个设备上阅读的用户。而 Readest 则增加了跨平台和同步,但代价是更大的体积和复杂性。另一个替代是 KOReader,它专注于电子墨水设备,如 Kindle 和 Kobo,支持更多格式,并且有强大的 PDF 重排功能。Readest 还提供了与 KOReader 的同步功能,这意味着它试图与 KOReader 共存,而不是替代。如果你需要深度 PDF 阅读,KOReader 可能更好;如果你需要现代界面和多平台,Readest 更合适。选择取决于你的使用场景:单一桌面还是多设备,以及你是否需要 PDF 的高级功能。
维护和许可:AGPL-3.0 的影响
Readest 采用 AGPL-3.0 许可,这是一个强 copyleft 许可。这意味着如果你修改了代码并部署为网络服务,你必须公开源代码。对于个人使用,这没有影响,但如果你打算集成到商业产品中,需要谨慎。项目活跃度较高,最近一次提交是 2026-08-28,版本 v0.12.6 在同一天发布,表明维护频率高。但这也意味着变化快,升级可能需要关注 changelog。README 没有提供贡献指南或文档链接,但提到了 Documentation 部分,可能包含更多细节。对于开发者,维护成本取决于你如何部署:如果你只是使用预构建版本,成本低;如果你要构建自己的版本或贡献代码,需要熟悉 Next.js 和 Tauri 的生态。许可方面,AGPL 可能限制某些商业用途,但如果你只是内部使用,没有问题。
编辑结论
Readest 适合需要跨平台一致体验的 avid reader,尤其是已经在用 Foliate 或 KOReader 的用户,因为它提供了现代界面和同步能力。但如果你只读 EPUB 且不需要移动端,Foliate 更轻量。若你依赖 DRM 保护的内容,Readest 明确不支持,应避免。在采用前,先验证你常用的字典格式(如 Yomitan 或 StarDict)是否被正确导入,以及 OPDS 源是否兼容。如果你是开发者,注意 AGPL-3.0 许可要求:任何网络服务或分发版本必须开源,这可能影响商业集成。最后,检查 v0.12.6 的已知问题,因为项目仍在快速迭代,API 和配置可能变化。
社区笔记