调整页码逻辑
本项目是一个基于 Svelte 的文件阅读器应用程序,支持多种文件格式的在线阅读,包括小说文本文件和漫画图片文件。项目采用 Rust 编写的 WebAssembly 模块来处理文件分析和分页计算,前端使用 Svelte 构建用户界面。
. ├── crates/ # Rust WebAssembly 模块 │ └── file-analyzer/ # 文件分析器 ├── src/ # 前端源码 │ ├── lib/ # 核心库 │ │ ├── reader/ # 阅读器模块 │ │ ├── wasm/ # 编译后的 WASM 模块 │ │ └── index.ts # 库入口文件 │ ├── routes/ # 页面路由 │ └── app.html # 应用主页面 ├── static/ # 静态资源 └── ...
使用 Rust 编写的 WebAssembly 模块,负责处理文件分析、字符索引和分页计算。
主要功能:
支持文本文件的阅读,具有以下特性:
支持图片文件的阅读,具有以下特性:
项目定义了多个接口用于前后端数据交互:
FileMeta
CanvasParams
PageMetrics
CharIndex
CachedIndex
PageQuery
PageContent
FileProcessor
npm install
# 同时运行 WASM 构建和 Svelte 开发服务器 npm run dev # 或者分别运行 npm run dev:wasm # 监听模式构建 WASM 模块 npm run dev:svlte # 运行 Svelte 开发服务器
# 构建 WASM 模块和 Svelte 应用 npm run build # 预览生产构建 npm run preview
# 检查代码 npm run check # 格式化代码 npm run format # 运行 lint npm run lint
# 运行单元测试 npm run test:unit # 运行所有测试 npm test
项目使用 @sveltejs/adapter-static 适配器,构建为静态单页应用(SPA)。
@sveltejs/adapter-static
Vite 配置包括:
Rust 项目的 Cargo.toml 配置了必要的依赖:
Cargo.toml
wasm-bindgen
web-sys
serde
js-sys
项目使用静态部署模式,构建后生成的文件可以部署到任何静态文件服务器上。
npm run build
构建产物位于 build/ 目录中。
build/
crates/file-analyzer/src/lib.rs
npm run build:wasm
如果修改了 Rust 代码但未生效,请确保重新构建 WASM 模块:
确保所有依赖已正确安装:
如有必要,清理缓存并重新安装:
rm -rf node_modules npm install
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
项目文档
项目概述
本项目是一个基于 Svelte 的文件阅读器应用程序,支持多种文件格式的在线阅读,包括小说文本文件和漫画图片文件。项目采用 Rust 编写的 WebAssembly 模块来处理文件分析和分页计算,前端使用 Svelte 构建用户界面。
技术栈
项目结构
核心功能模块
1. 文件处理模块 (WASM)
使用 Rust 编写的 WebAssembly 模块,负责处理文件分析、字符索引和分页计算。
主要功能:
2. 阅读器模块
NovelReader (小说阅读器)
支持文本文件的阅读,具有以下特性:
ComicReader (漫画阅读器)
支持图片文件的阅读,具有以下特性:
3. 数据接口
项目定义了多个接口用于前后端数据交互:
FileMeta: 文件基本信息类型(用于哈希计算和缓存校验)CanvasParams: Canvas 渲染参数PageMetrics: 分页计算结果CharIndex: 字符索引核心信息CachedIndex: 缓存的索引数据结构PageQuery: 页面内容查询参数PageContent: 页面内容结果FileProcessor: Wasm 处理器接口开发指南
环境要求
安装依赖
开发模式
构建生产版本
代码检查和格式化
测试
配置说明
Svelte 配置
项目使用
@sveltejs/adapter-static适配器,构建为静态单页应用(SPA)。Vite 配置
Vite 配置包括:
Rust WASM 配置
Rust 项目的
Cargo.toml配置了必要的依赖:wasm-bindgen: 用于与 JavaScript 交互web-sys: 用于访问 Web APIserde: 序列化/反序列化库js-sys: 用于与 JavaScript 对象交互部署
项目使用静态部署模式,构建后生成的文件可以部署到任何静态文件服务器上。
构建产物位于
build/目录中。扩展开发
添加新的阅读器类型
优化 WASM 模块
crates/file-analyzer/src/lib.rsnpm run build:wasm常见问题
WASM 模块未更新
如果修改了 Rust 代码但未生效,请确保重新构建 WASM 模块:
开发服务器启动失败
确保所有依赖已正确安装:
如有必要,清理缓存并重新安装: