deepseek_mermaid_20260729_002415

一、收藏的电子书,读不成了

十几年来,我的硬盘里攒了大量电子书——EXE、CHM、PDF、TXT、EPUB……光是 E 书格式的就存了几百本。可当我把它们从旧电脑拷到新电脑上时,问题接二连三地冒了出来:

  • EXE 文件打不开了:旧格式只支持xp系统,一个个改兼容太麻烦。
  • CHM 格式字体太小:排版固定,没法调整,在平板上根本看不下去。
  • TXT 又太简陋:没有目录导航,读到哪儿了全靠自己记。
  • 各设备体验割裂:手机上没法看,平板上排版乱,电脑上勉强能读却很不舒服。

归根结底一句话:那些曾经能读的书,现在读不了了。

二、统一到 HTML:唯一靠谱的选择

我需要一种任何设备、任何系统、任何浏览器都能打开的格式。翻了一圈,只有 HTML 满足条件。

  • 跨平台:手机、平板、电脑,只要有浏览器就能读。
  • 无需软件:不依赖任何阅读器或 APP。
  • 可定制:字体、背景、排版都由自己控制。
  • 可部署:放到服务器上,随时随地访问。

这个方向很明确,但另一个问题随之而来——当时市面上没有现成的、能撑起一本大书的 HTML 模板。

三、求助 DeepSeek:帮我写一个

我决定用 DeepSeek 来开发一套属于自己的阅读器模板。需求很简单:

"帮我写一个阅读器的 HTML,能加载 JSON 格式的电子书数据,有目录、翻页、字体调整,还能自动记住阅读进度。"

DeepSeek 很快生成了初版代码。我复制、保存、打开测试——能跑,但一加载《临高启明》的 JSON 数据(2500 多章、近 30MB)浏览器就卡死了。

于是我又向 DeepSeek 描述问题,它给出了优化方案:

"用 IndexedDB 做持久化缓存 + 流式加载 + 分页渲染目录。"

改完代码再试,流畅了。就这样,我与 DeepSeek 合作,边测边改,边改边测,前前后后迭代了十几次,逐步打磨出了一套能扛住千万字级别的阅读器模板。

四、几个关键问题的解决

以下是 DeepSeek 帮我解决的主要难题:

1. 大文件加载卡死

  • 方案fetch + ReadableStream 流式读取 + 实时进度条,边下载边解析。
  • 效果:用户能看到"下载中 67%(已解压 18.6 MB/传输 5.2 MB)",不再干等。

2. 目录太多导致侧栏卡顿

  • 方案:分页渲染,每次只加载 50 条,滚动到底部再加载下一批。
  • 效果:即使 2500 章,目录滑动依旧顺滑。

3. 滚动位置记不住

  • 方案:用 localStorage 保存每篇的滚动位置,超出 200 条自动清理旧记录。
  • 效果:翻页后回到同一篇,能直接续上之前的阅读位置。

4. 多书共用模板导致数据混乱

  • 方案:IndexedDB 缓存键名基于书名动态生成,不同书的数据隔离。
  • 效果:同一浏览器可同时打开多本书,互不干扰。

5. 其他网站直接引用我的页面

  • 方案:前端防盗链,禁止 iframe 嵌套 + Referer 白名单验证。
  • 效果:其他网站无法把页面嵌入到自己的框架中,保护内容不被盗用。

6. 目录中卷名反复出现

  • 方案:分页加载时继承上一批最后一条的卷名,只在卷名真正变化时才插入分组标题。
  • 效果:每卷只显示一次分组标题,目录干净整齐。

五、建站与分享:好东西不该锁在硬盘里

因为自己本身有一个小小的网站,就想把书籍都搬到网上,一方面方便自己随时随地阅读,另一方面也想把整理好的电子书分享给更多人。

目前已上线的书籍:

  • 《临高启明》 :2510 章,30MB JSON 数据
  • 《明史》 :332 卷,全本
  • 《王阳明全集》 :14 篇,全本
  • 更多古籍、文学作品持续整理中

分享的理由很简单:这些书大多是公版古籍或公开的网络文学,版权上没有问题。好东西应该被阅读、被传播,而不是锁在硬盘里。

六、最终的模板长什么样

主要功能

功能说明
加载机制IndexedDB 缓存 + 流式加载 + 实时进度条
目录系统按卷分组 + 分页渲染(50 条/批)
阅读交互键盘翻页 + 触屏滑动 + 字体调节
进度保存页码 + 滚动位置 + 阅读进度百分比
安全防护前端防盗链 + XSS 净化

性能数据

  • 支持数据量:50MB+ JSON
  • 测试书籍:《临高启明》2510 章
  • 首次加载:≈ 5-8 秒
  • 二次打开:< 500ms(秒开)

模板完全基于原生 HTML + CSS + JS,不依赖任何框架,一个 HTML 文件就是完整的阅读器。

七、一点心得

回顾整个过程,有几个真实感受:

AI 是强大的助手,但不是全自动工具。 它帮我写代码、优化性能、修 Bug,但需要我不断测试、反馈、验证。它替我完成了"从需求到代码"的转换,而我要做的是清晰描述问题、判断方案是否合适、确认最终效果。这是一种协作式开发,而不是一键生成。

原生技术依然有它的价值。 这套模板没有任何 npm 依赖,纯粹的 HTML + CSS + JS。脱离框架后,这个文件具备了极好的"长寿性"——十年后,只要浏览器还支持 ES6,它依然能跑。

工具的意义在于解决问题。 这套模板对我来说,是为了让那些躺在硬盘里的电子书"活过来"。对别人而言,它让几百本书重新变得可读、可分享、可传承。

八、模板获取与反馈

  • 书苑入口https://ziyege.com/book/

欢迎使用,也欢迎提出改进建议。


📧 联系:如有问题或想法,欢迎交流。

最后更新:2026 年 7 月