
缘起——为什么要自己写一个阅读器
手机和电脑之间,书签对不上这件事,我忍了很久。
小说是在手机上看的,挤地铁、排队、睡前刷几章。可一到电脑前——写代码的间隙想接着看,进度就对不上了。试过好几个阅读器,要么强制登录,要么要联网传书,要么两头都得开会员。我只想把一本本地的 TXT,在两台设备之间接起来,就这么难?
于是有了旦阅。
想法很朴素:书就在本地,谁也别动它。要同步的只有一件事——读到哪儿了。一个字符下标,一条记录,比一张头像图还小。
三端就是这么来的:
- 安卓端,用 uni-app x 的蒸汽模式写,负责书架、排版、翻页这些"阅读器本体"的活;
- 服务端,ASP.NET Core 加 SQLite,小到几乎只有一张表,只管把"谁读到哪儿"记下来;
- 桌面端,WPF,和安卓端共用同一套算法——写到一半发现"章节切分"两端各写一份太蠢,干脆抽成了一个共享的核心库。
整个项目做下来,踩的坑比写出来的代码还多:分页和 CSS 打架、CRLF 恰好切在块边界上、基座里根本没有网络模块……每一件都值得单独记一篇。
所以有了这个系列:《旦阅诞生记》。不写教程,只复盘——把过程里的弯路、取舍,和那些"哦,原来是这样"的时刻,一篇一篇摆出来。今天是第一篇,就当个目录吧。
下一篇,先从最难啃的骨头说起:怎么让两台设备认出"这是同一本书"。