请教:像起点 / 番茄小说这类 App 的阅读器一般是怎么实现的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yoooxin
V2EX    程序员

请教:像起点 / 番茄小说这类 App 的阅读器一般是怎么实现的?

  •  
  •   yoooxin 22 小时 43 分钟前 1163 次点击

    大家好,最近在做一个阅读类产品(目前关注 epub 格式),在研究阅读器实现方案时有些疑惑,想请教下有经验的朋友。

    目前我能想到的几种可能方案:

    1. WebView + 深度定制

      • 比如基于类似 foliate.js / epub.js 这种排版引擎
      • 自己接管分页、段落拆分、行高、字体、主题、进度等
      • 优点是跨端快,缺点是需要大量 Hack WebView 行为
    2. 原生实现排版

      • iOS 用 CoreText / TextKit
      • Android 用 StaticLayout / 自绘
      • 完全自己控制分页、缓存、手势、动画
      • 工程量巨大,但体验最好?
    3. 混合方案

      • 数据层按“句 / 段”切好
      • 原生做分页与交互
      • 但排版规则可能还是参考 Web 的模型?

    我比较困惑的是:

    • 番茄小说 / 起点读书 这种体量和体验都很成熟的阅读器 更可能是完全原生自研,还是基于 WebView 深度魔改?
    • 现在主流商业阅读 App 是否还在使用 Web 技术栈?
    • 如果是原生实现,一般是 “按页缓存” 还是 “按段落流式计算”

    目前我自己倾向于认为:

    早期可能 WebView ,成熟后大概率是原生排版引擎

    但没有实锤证据。

    如果有做过阅读器、电子书、小说 App 的朋友,或者踩过相关坑,欢迎分享一下你们的实践经验 也很欢迎推荐一些值得研究的开源项目或技术方向。

    感谢!

    11 条回复    2026-03-03 09:49:38 +08:00
    chengYT
        1
    chengYT  
       22 小时 38 分钟前   1
    看看开源代码?
    readest: https://github.com/readest/readest
    AoEiuV020JP
        2
    AoEiuV020JP  
       21 小时 12 分钟前   1
    不大可能有 webview 技术,webview 翻页手感和原生差太多,
    值得一提的是我也写过原生的阅读器,其中的仿真翻页动画涉及贝塞尔曲线,直接 copy 网上不知道那里抄的代码, 当年发现这块我 app 有个小 bug (翻页动画拖到特定像素位置有异常闪烁)而起点 app 也有完全一样的 bug ,我一直怀疑是抄的同一段代码,
    https://github.com/AoEiuV020/PaNovel/blob/master/pager/src/main/java/cc/aoeiuv020/pager/animation/SimulationPageAnim.java

    其他分页、缓存啥的不管什么技术栈,都得自己做,直接用第三方的太不可控了,得能根据自己的业务逻辑调整,
    ryougifujino
        3
    ryougifujino  
       21 小时 11 分钟前
    这种大厂的阅读器肯定是自绘自研的
    whileFalse
        4
    whileFalse  
       21 小时 4 分钟前
    人家的原始数据格式凭什么存 epub ?
    它的小说一章就几千字而已。
    ShineyWang
        5
    ShineyWang  
       21 小时 3 分钟前
    安卓有开源的阅读软件
    https://github.com/gedoor/legado

    是很多安卓用户离不开的原因
    ala2008
        6
    ala2008  
       21 小时 1 分钟前
    不是有开源的吗,参考
    SingeeKing
        7
    SingeeKing  
    PRO
       20 小时 58 分钟前
    我倾向原生,因为 Web 实现的几个阅读器体验相比它们差太多了

    不过你其实已经没必要猜了,这几个困惑完全可以让 AI 直接帮你逆向回答你
    SingeeKing
        8
    SingeeKing  
    PRO
       20 小时 57 分钟前
    另外,番茄起点都是小说阅读器,微信读书才是正经的电子书阅读器,两种的实现成本完全不一样
    cairnechen
        9
    cairnechen  
       20 小时 57 分钟前
    @ShineyWang 折腾 TTS 的时候用过这个,说实话感觉有点难用
    zoharSoul
        10
    zoharSoul  
       13 小时 43 分钟前
    原生实现排版
    Lockroach
        11
    Lockroach  
       4 小时 42 分钟前
    原生或者 ft ,webview 性能太差
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5950 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 48ms UTC 06:31 PVG 14:31 LAX 22:31 JFK 01:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86