# history_pdf_compare.js 模块拆分方案 ## 文件结构 原文件 (2205行) 拆分为 4 个模块: ``` js/history/ ├── pdf-compare-renderer.js (已创建 - 文本渲染引擎) ├── pdf-compare-segments.js (待创建 - 分段和懒加载) ├── pdf-compare-ui.js (待创建 - UI 交互) └── history_pdf_compare.js (简化 - 主协调类) ``` ## HTML 引用顺序 ```html ``` ## 模块职责 ### 1. pdf-compare-renderer.js ✅ - 文本渲染引擎 - 白色背景绘制 - 文本自适应算法 - 换行处理 - 暴露: `window.PDFCompareRenderer` ### 2. pdf-compare-segments.js (待创建) - 分段创建和管理 - 懒加载逻辑 - 可见区域检测 - Canvas 渲染队列 - 暴露: `window.PDFCompareSegments` ### 3. pdf-compare-ui.js (待创建) - 事件绑定 (点击、滚动) - 高亮显示 - 滚动同步 - bbox 交互 - 暴露: `window.PDFCompareUI` ### 4. history_pdf_compare.js (简化主类) - 核心数据管理 - 模块协调 - PDF 初始化 - 全局字号预处理 - 暴露: `window.PDFCompareView` ## 通信方式 各模块通过主类实例通信: ```javascript class PDFCompareView { constructor() { // ... 初始化数据 ... // 创建子模块实例,传入 this this.renderer = new PDFCompareRenderer(this); this.segments = new PDFCompareSegments(this); this.ui = new PDFCompareUI(this); } } ``` 子模块通过 `this.view` 访问主类数据和方法。 ## 兼容性 - ✅ 不使用 ES6 模块 (import/export) - ✅ 通过全局变量通信 - ✅ 浏览器直接可用 (file:// 协议) - ✅ 保持原有 API 不变