# JSReader epub reader **Repository Path**: Practice-ren/JSReader ## Basic Information - **Project Name**: JSReader epub reader - **Description**: 一个epub格式电子书的解析器,阅读器,能保存最后一次阅读记录(当手动退出应用时记录最后一次阅读)。App要功能完备的话还需要实现设置字体色,背景色,字体,字体大小。 - **Primary Language**: Objective-C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2026-07-28 - **Last Updated**: 2026-07-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JSReader 项目技术栈说明 **JSReader** 是一款 **iOS 原生电子书阅读器**,主要用来阅读内置的 **金庸全集 EPUB** 电子书。项目创建于 2016 年,整体是典型的 **Objective-C + UIKit** 架构。 --- ## 核心编程语言 | 语言 | 用途 | |------|------| | **Objective-C** | 应用主体代码(控制器、模型、工具类) | | **C** | 第三方库 SSZipArchive 内部(minizip、AES 解压) | | **JavaScript** | 在 WebView 中动态调整字号、日夜间主题等 | | **HTML / XHTML** | EPUB 章节内容,在 WebView 中渲染 | | **CSS** | EPUB 内嵌样式 + 通过 JS 注入样式规则 | | **XML** | 解析 EPUB 的 `container.xml`、`content.opf` 等结构 | 项目中 **没有使用 Swift**(`Podfile` 里 `use_frameworks!` 被注释掉)。 --- ## 平台与构建工具 - **平台**:iOS(最低支持 **iOS 8.0**,工程配置中部分 target 为 9.3) - **IDE / 构建**:**Xcode** + **CocoaPods 0.39.0** - **内存管理**:**ARC**(Automatic Reference Counting) - **C++ 标准库**:`libc++`(工程配置中有,主要用于依赖库) --- ## Apple 原生框架 - **UIKit**:界面、导航、表格、滚动视图 - **Foundation**:文件管理、通知、序列化、队列 - **NSXMLParser**:解析 EPUB 的 XML 元数据(manifest、spine、guide) - **UIWebView**(通过 TOWebViewController):展示 EPUB 章节 HTML(已过时 API,当时常见做法) - **NSUserDefaults**:保存上次阅读的书籍名 - **NSOperationQueue**:后台异步解析 EPUB --- ## 第三方依赖(CocoaPods) ```7:12:E:\work\我的壁纸网站\JSReader\JSReader\Podfile pod 'MMDrawerController', '~> 0.5.7' pod 'TOWebViewController' #pod 'hpple', '~> 0.2.0' pod 'SSZipArchive', '~> 1.1' pod 'SDWebImage', '~> 3.7.5' pod 'Myhpple', '~> 0.0.3' ``` | 库 | 作用 | |----|------| | **MMDrawerController** | 三栏抽屉式布局(左目录 / 中阅读 / 右设置) | | **TOWebViewController** | 封装 WebView 的阅读页,带进度条、导航等 | | **SSZipArchive** | 解压 `.epub`(EPUB 本质是 ZIP 包) | | **SDWebImage** | 图片异步加载与缓存(书籍封面等) | | **Myhpple (TFHpple)** | XPath 解析 HTML,从目录页提取章节列表 | --- ## 界面技术 - **Storyboard**:`LaunchScreen.storyboard` 启动页 - **XIB / NIB**:`LeftViewController`、`RightViewController`、`LeftViewCell` - **代码布局**:书架页 `ChooseViewController` 用 `UIScrollView` 程序化构建 - **Assets.xcassets**:应用图标等资源 --- ## 项目架构与数据流 整体是 **MVC** 模式: ``` AppDelegate └── ChooseNavController(书架) └── ChooseViewController(选书) └── MMDrawerController(三栏) ├── LeftViewController(目录,UITableView) ├── MiddleViewController(阅读,WebView) └── RightViewController(设置面板) ``` **EPUB 处理流程**: 1. `JSFileHandler` 扫描 Bundle 中的 `.epub` 文件 2. `EpubParseOperation` 用 **SSZipArchive** 解压 3. **NSXMLParser** 解析 `container.xml` → `content.opf` 4. **TFHpple** 解析目录 HTML,提取章节与文件映射 5. `MiddleViewController` 用 **TOWebViewController** 加载本地 HTML 章节 6. 通过 **JavaScript** 控制字号、背景色(日/夜/护眼模式) --- ## 简要总结 这是一个 **2016 年风格的 iOS 原生 EPUB 阅读器**: - **主语言**:Objective-C - **UI 框架**:UIKit + Storyboard/XIB - **阅读引擎**:UIWebView + 本地 HTML - **书籍格式**:EPUB(ZIP + XML + HTML) - **依赖管理**:CocoaPods - **辅助脚本**:少量 JavaScript 注入 WebView 若要在现代 iOS 上维护,主要升级点包括:将 **UIWebView 替换为 WKWebView**,并更新部分已停更的 CocoaPods 依赖。