Skip to content

FanhuaAwA/legado

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

127 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Legado Tauri Logo

Legado Tauri

跨平台桌面阅读应用 — 基于 Tauri v2 + Vue 3 + Rust 构建

Tauri Vue Rust TypeScript License

功能介绍快速开始项目结构参与贡献书源开发


✨ 功能特性

📚 书架管理

  • 追读书籍集中管理
  • 按书名 / 作者快速搜索
  • 章节阅读器,沉浸式阅读体验

🔍 多源发现 & 搜索

  • 从多个书源浏览推荐内容
  • 跨书源聚合搜索
  • 智能书源能力检测

📄 书源系统

  • JavaScript 脚本驱动,灵活可扩展
  • 内置代码编辑器(Monaco Editor),实时调试
  • 在线仓库一键安装,书源管理轻松自如

🔌 插件扩展

  • 扩展脚本系统,高度可定制
  • 内置示例代码库,快速上手
  • 按分类管理,即装即用

🎨 精致 UI

  • Naive UI 组件库打造现代界面
  • CSS Grid 响应式布局,桌面 / 移动端自适应
  • 可折叠侧边栏,自定义主题色

⚡ 高性能 & 安全

  • Rust 后端保障原生级性能
  • Boa JS 引擎沙箱执行,安全隔离
  • 多层超时保护,防止脚本失控

🛠 技术栈

技术 说明
前端 Vue 3 + TypeScript Composition API + <script setup>
UI Naive UI 2 全局注册,开箱即用
编辑器 Monaco Editor 离线 Worker,完整 IDE 体验
桌面壳 Tauri 2 (Rust) 原生性能,跨平台打包
JS 引擎 Boa Engine 安全沙箱执行书源脚本
构建 Vite 6 + vue-tsc 极速 HMR 开发体验
包管理 pnpm 高效依赖管理

🚀 快速开始

环境要求

工具 版本
Node.js >= 18
pnpm >= 8
Rust stable (2021 edition)
Tauri CLI v2

安装 & 运行

# 1. 克隆仓库
git clone https://github.com/AoEiuV020/Legado_Tauri.git
cd Legado_Tauri

# 2. 安装前端依赖
pnpm install

# 3. 启动开发模式(前端 + Tauri 桌面应用)
pnpm run dev:desktop

# 开发服务器默认监听 0.0.0.0:1420,可直接用于局域网联调

构建发布

# Windows
pnpm run build:windows

# 通用构建(自动检测平台)
pnpm run build:tauri

# Android(需要配置 JDK 17)
pnpm run build:android

📁 项目结构

Legado_Tauri/
├── src/                          # 前端源码
│   ├── App.vue                   #   根组件,CSS Grid 布局
│   ├── main.ts                   #   入口:Naive UI + Monaco Worker 配置
│   ├── style.css                 #   全局 CSS 变量 & 设计令牌
│   ├── views/                    #   页面视图
│   │   ├── BookshelfView.vue     #     书架
│   │   ├── BookSourceView.vue    #     书源管理(安装/仓库/调试)
│   │   ├── ExploreView.vue       #     发现
│   │   ├── ExtensionsView.vue    #     插件管理
│   │   ├── HistoryView.vue       #     历史
│   │   └── SettingsView.vue      #     设置
│   ├── components/               #   组件
│   │   ├── layout/               #     布局组件(TitleBar/SideBar/TaskBar)
│   │   ├── BookSourceEditorModal.vue  # Monaco 书源编辑器
│   │   └── ScriptDialog.vue      #     扩展脚本对话框
│   └── composables/              #   组合式函数
│       ├── useBookSource.ts      #     书源 CRUD & 模板
│       ├── useExtension.ts       #     扩展管理
│       └── useScriptBridge.ts    #     脚本桥接
├── src-tauri/                    # Rust 后端
│   ├── src/
│   │   ├── lib.rs                #     命令注册入口
│   │   ├── booksource/           #     书源引擎(Boa JS / DOM / 加密)
│   │   ├── extension/            #     扩展系统
│   │   └── utils/                #     异步工具函数
│   ├── tauri.conf.json           #     Tauri 配置
│   └── Cargo.toml                #     Rust 依赖
├── booksources/                  # 示例书源文件
├── docs/                         # 开发文档
└── scripts/                      # 辅助脚本

🧭 架构原则:前后端分离

本项目按前后端分离设计:开发期前端与 Rust 后端打包在同一 Tauri 壳内运行,远期后端将独立部署到服务器,前端作为纯静态客户端通过 WebSocket(默认 ws://<host>:7688/ws)连接。因此:

  • 前端业务代码不得直接使用 @tauri-apps/api,所有后端调用与事件必须走 useInvoke / useEventBus / useFileSrc 统一封装层;
  • 后端业务逻辑写在 crates/reader-core(不依赖 Tauri),src-tauri 仅做命令转发。

完整的强制约束、WS 协议契约与实施路线见 docs/frontend-backend-separation.md

📖 书源开发

书源是标准的 JavaScript 文件,通过注释头声明元数据:

// @name        我的书源
// @version     1.0.0
// @author      你的名字
// @url         https://example.com
// @description 书源简介

function search(keyword, page) {
  const html = legado.http.get(`https://example.com/search?q=${keyword}&page=${page}`);
  const doc = legado.dom.parse(html);
  // ... 解析搜索结果
}

内置宿主 API

API 说明
legado.http.get/post() HTTP 请求
legado.dom.parse() HTML DOM 解析 (CSS 选择器)
legado.base64Encode/Decode() Base64 编解码
legado.md5() / legado.sha256() 哈希函数
legado.aesEncrypt/Decrypt() AES 加解密
legado.config.read/write() 持久化配置读写
legado.log() / legado.toast() 日志与通知

📄 完整 API 文档请参阅 docs/booksource.md

🤝 参与贡献

欢迎任何形式的贡献!无论是提交 Bug 报告、功能建议还是代码贡献。

开发流程

  1. Fork 本仓库
  2. 创建功能分支:git checkout -b feature/my-feature
  3. 提交更改:git commit -m "feat: 添加某功能"
  4. 推送分支:git push origin feature/my-feature
  5. 提交 Pull Request

开发规范

  • 前端组件统一使用 <script setup lang="ts"> 风格
  • 优先使用 Naive UI 组件,保持视觉一致性
  • Rust 新增命令需在 lib.rsgenerate_handler![] 中注册
  • 代码提交前请确保:
    • pnpm vue-tsc --noEmit — 无 TypeScript 类型错误
    • cargo check(src-tauri 目录下)— 无 Rust 编译错误

推荐 IDE 配置

📄 许可证

本项目基于 MIT 许可证 开源。


如果这个项目对你有帮助,请给一个 ⭐ Star 支持我们!

About

legado

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors