ReadViewSDK/.planning/codebase/STRUCTURE.md
2026-05-21 20:36:12 +08:00

150 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 代码库结构
**分析日期:** 2026-05-21
## 目录布局
```text
ReadViewSDK/
├── Sources/
│ └── RDReaderView/ # SDK 实现Swift
│ ├── EPUBCore/ # EPUB 解压/解析/模型/分页/状态Foundation/WebKit
│ ├── EPUBTextRendering/ # TXT/TextBook 构建 + 文本渲染/搜索
│ ├── EPUBUI/ # 阅读器控制器 UX、设置、持久化、工具视图
│ ├── LegacyRDReaderController/# 旧版阅读器控制器 + 工具视图
│ ├── Resources/ # 资源pod resource bundle
│ ├── RDReaderView.swift # 核心分页视图 + DS/delegate 协议
│ ├── RDReaderFlowLayout.swift # 滚动模式的 CollectionView 分页布局
│ └── RDURLReaderController.swift # 基于 URL 的入口控制器
├── ReadViewDemo/
│ ├── ReadViewDemo/ # Demo App 源码/资源UIKit
│ ├── ReadViewDemo.xcodeproj/ # Demo target 的 Xcode project
│ ├── ReadViewDemo.xcworkspace/ # 集成 Pods 工程的 workspace
│ ├── Podfile # Demo 的 Pods 集成(本地 path
│ └── Podfile.lock # Demo 的锁定依赖版本
├── Pods/ # 仓库根目录的 CocoaPods 产物(本地开发)
├── Podfile # 仓库级 Pods 集成脚本(见说明)
├── RDReaderView.podspec # SDK 的 Podspec分发与依赖声明
├── Doc/ # 参考资料/分析产物
└── .planning/codebase/ # 生成的代码库地图(本目录)
```
## 目录职责
**`Sources/RDReaderView/EPUBCore`**
- 目的EPUB 解压 + 解析 + 核心模型 + 分页 + 导航状态。
- 关键文件:
- `Sources/RDReaderView/EPUBCore/RDEPUBParser.swift`
- `Sources/RDReaderView/EPUBCore/RDEPUBPaginator.swift`
- `Sources/RDReaderView/EPUBCore/RDEPUBPublication.swift`
- `Sources/RDReaderView/EPUBCore/RDEPUBReadingSession.swift`
**`Sources/RDReaderView/EPUBUI`**
- 目的:阅读器 UX 协调与对外 reader controller API。
- 关键文件:
- `Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift`
- `Sources/RDReaderView/EPUBUI/RDEPUBReaderConfiguration.swift`
- `Sources/RDReaderView/EPUBUI/RDEPUBReaderPersistence.swift`
**`Sources/RDReaderView/EPUBTextRendering`**
- 目的:从 `.txt` 构建 `RDEPUBTextBook`,并提供渲染/搜索等能力。
- 关键文件:
- `Sources/RDReaderView/EPUBTextRendering/RDPlainTextBookBuilder.swift`
- `Sources/RDReaderView/EPUBTextRendering/RDEPUBTextBookBuilder.swift`
- `Sources/RDReaderView/EPUBTextRendering/RDEPUBTextRenderer.swift`
**`Sources/RDReaderView`(顶层文件):**
- 目的SDK 的对外入口与核心分页视图/布局基础设施。
- 关键文件:
- `Sources/RDReaderView/RDURLReaderController.swift`
- `Sources/RDReaderView/RDReaderView.swift`
- `Sources/RDReaderView/RDReaderFlowLayout.swift`
**`ReadViewDemo/ReadViewDemo`**
- 目的Demo App用于发现内置书籍并打开 SDK。
- 关键文件:
- `ReadViewDemo/ReadViewDemo/ViewController.swift`
- `ReadViewDemo/ReadViewDemo/AppDelegate.swift`
- `ReadViewDemo/ReadViewDemo/SceneDelegate.swift`
## 关键文件位置
**SDK 入口点:**
- `Sources/RDReaderView/RDURLReaderController.swift`URL 入口epub/txt 路由)。
- `Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift`主阅读器控制器EPUB + external TextBook
- `Sources/RDReaderView/RDReaderView.swift`:分页视图与 data source/delegate 协议。
**Demo 入口点:**
- `ReadViewDemo/ReadViewDemo/AppDelegate.swift`App 生命周期入口(`@main`)。
- `ReadViewDemo/ReadViewDemo/SceneDelegate.swift`Window 与 root navigation controller 配置。
- `ReadViewDemo/ReadViewDemo/ViewController.swift`:书籍列表 → 打开 reader。
**配置/打包:**
- `RDReaderView.podspec`SDK 打包(源码 + 资源 + 依赖)。
- `ReadViewDemo/Podfile`Demo 的 Pods 集成(`pod 'RDReaderView', :path => '..'`)。
- `ReadViewDemo/ReadViewDemo.xcworkspace/contents.xcworkspacedata`workspace 结构。
## 命名约定
**模块(目录)划分:**
- `EPUBCore`、`EPUBUI`、`EPUBTextRendering`:按职责分层拆分于 `Sources/RDReaderView/` 下。
**类型前缀:**
- `RD*`:阅读器容器视图与 legacy controller/tooling例如 `RDReaderView`、`RDURLReaderController`)。
- `RDEPUB*`EPUB 解析/分页/阅读器 UI 域(例如 `RDEPUBParser`、`RDEPUBPaginator`、`RDEPUBReaderController` 及相关模型)。
## 组件关系(从入口到渲染)
- `RDURLReaderController` 根据文件类型选择实现:
- `.epub``RDEPUBReaderController(epubURL:configuration:persistence:)`
- `.txt``RDPlainTextBookBuilder``RDEPUBReaderController(textBook:...)`
- 回退路径:分页失败时使用 `UITextView` 展示原始文本
- 入口文件:`Sources/RDReaderView/RDURLReaderController.swift`
- `RDEPUBReaderController` 负责阅读器生命周期:
- parse`RDEPUBParser`)→ publication`RDEPUBPublication`)→ paginate`RDEPUBPaginator`)→ display`RDReaderView`
- 通过 `RDEPUBReaderPersistence` 持久化设置/位置/书签/高亮等
- 入口文件:`Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift`
## 新代码应放在哪里
**新增面向读者的 UI 功能(工具视图/菜单/手势):**
- 主要:`Sources/RDReaderView/EPUBUI/`
- 若影响分页呈现:`Sources/RDReaderView/RDReaderView.swift` 或 `Sources/RDReaderView/RDReaderFlowLayout.swift`
**新增 EPUB 解析/模型支持:**
- 主要:`Sources/RDReaderView/EPUBCore/`parser/models/resolver
**新增纯文本导入/渲染行为:**
- 主要:`Sources/RDReaderView/EPUBTextRendering/`
**更新 Demo / 复现步骤:**
- 主要:`ReadViewDemo/ReadViewDemo/`
## 特殊目录说明
**`Pods/``ReadViewDemo/Pods/`**
- 用途CocoaPods 生成产物,服务本地开发/示例工程。
- 是否生成:是。
- 是否提交:当前工作区中存在(通常按生成目录对待)。
**`Doc/`**
- 用途:文档/分析资料(不属于 SDK 运行时的一部分)。
## Evidence关键证据
检查过的关键文件:
- `RDReaderView.podspec`
- `Podfile`
- `ReadViewDemo/Podfile`
- `ReadViewDemo/ReadViewDemo.xcodeproj/project.pbxproj`
- `ReadViewDemo/ReadViewDemo.xcworkspace/contents.xcworkspacedata`
- `ReadViewDemo/ReadViewDemo/ViewController.swift`
- `Sources/RDReaderView/RDURLReaderController.swift`
- `Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift`
- `Sources/RDReaderView/EPUBCore/RDEPUBParser.swift`
- `Sources/RDReaderView/EPUBCore/RDEPUBPaginator.swift`
---
*结构分析2026-05-21*