全部项目

阅读与检索 / Fork 维护

rossi

图源用 JS 插件写,阅读器只管安心看图。

我在这项目里干了啥

Fork 维护、QuickJS 图源引擎与阅读器对接

用到的技术栈

Flutter / Rust / QuickJS

rossi:在 Rust 里塞了个 QuickJS 引擎专门跑图源脚本,Flutter 只管把图漂亮地排出来。的原理示意图
用 SVG 画的原理示意图(不是软件截图,主要为了把底层是怎么跑的讲清楚)。

为什么做这个

如果把不同漫画站点的抓取和解析逻辑硬编码在阅读器里面,哪怕只有一个站点改版,都得重新编译整个客户端,维护起来太累了。

我是怎么搞定的

把每个图源都拆成独立的 JS 脚本,交给底层的 Rust + QuickJS 沙箱去跑;跑出来的标准列表和图片地址再传给顶层的 Flutter 界面展示。

现在做成了什么样

把「JS 插件跑图源 + Flutter 负责看漫画」这条路子维护好。插画里标的「列表、搜索、取图」是插件对外提供的几类基本动作。

提前说清楚的局限

软件本身只是一个空壳阅读器,不自带任何漫画资源。该项目基于上游 Fork 维护,保留原作者归属。

做的时候怎么权衡的

一个站点一个 JS 文件

哪个图源失效了,直接改对应的 JS 脚本就行,不用动阅读器本体。

脚本丢给 Rust 里的 QuickJS 跑

既能跨平台复用同一套图源逻辑,又比拉起整个浏览器内核轻快得多。

Flutter 只操心翻页和排版

脏活累活都在底层干完了,界面层只需要专心把阅读体验做好。

顺便看看下一个Shiin

用手柄捕捉这一帧,不用切回键盘打断游戏。