🧱 前端开发文档:AI 论文编辑器
⚙️ 技术选型
- 框架:Vue 3 + Vite
- 组件库:推荐 Element Plus(功能丰富、适配 PC 编辑器)
- 状态管理:Pinia(轻量、Vue 3 原生支持)
- 路由:Vue Router
- 富文本编辑器:推荐 TipTap 或 Editor.js
- 支持 Markdown 格式、嵌入图片、表格、标题
- PDF预览:
pdfjs-dist
+<iframe>
或vue-pdf-embed
- Markdown解析:
markdown-it
(将 AI 输出的 Markdown 渲染成 HTML)
📁 项目结构
1 | frontend/ |
🧭 页面设计
页面 | 说明 |
---|---|
登录/注册页 | 用户认证,获取JWT |
主编辑器页面 | 核心编辑器,包含目录树、编辑区、AI对话 |
模板选择页面 | 选择docx/pdf模板,预览样式 |
论文预览页面 | LaTeX→PDF后的预览 |
🧩 功能组件(模块划分)
1. 📚 目录树组件(OutlineTree)
- 作用:显示论文结构,支持增删改查、拖拽排序
- 功能:
- 添加/删除章节
- 修改标题文本
- 拖动排序
- 技术建议:使用
element-plus
的el-tree
+ 拖拽插件(如vuedraggable
)
2. ✍️ 富文本编辑器组件(RichEditor)
- 每个目录节点对应一个编辑器实例(或者通过切换加载)
- 支持:
- Markdown / HTML 编辑
- 图片上传
- 表格插入
- 推荐:Tiptap(可用
@tiptap/vue-3
)
3. 🤖 AI 对话组件(ChatPanel)
- 支持上下文提示输入
- 可预设 prompt 模板(“写摘要”、“润色该段”、“按学术格式重写”等)
- 支持 Markdown 渲染 AI 回复,点击“应用”按钮插入到当前章节
4. 🧾 模板选择与导出组件(TemplateManager)
- 显示所有可用模板(后端返回)
- 可上传 zip 格式模板
- 支持设置默认模板
- 导出按钮发送 POST 请求生成 PDF(返回下载链接或预览)
5. 🖼 PDF 预览组件(PdfPreview)
- 使用
pdfjs-dist
或vue-pdf-embed
- 将生成的 PDF 放入
<iframe>
或直接嵌入预览
6. 🧑 用户中心(UserPanel)
- 用户信息展示
- JWT 管理(登录时写入 LocalStorage)
- 支持修改密码、退出登录
🔗 与后端接口对接
登录认证
- 登录成功后保存 JWT 到本地
1 | localStorage.setItem("token", res.data.access_token) |
- 所有请求需带上
Authorization: Bearer <token>
与后端交互接口示例
1 | const api = axios.create({ |
🛠 本地存储与状态管理
- 使用 Pinia 管理全局状态(论文结构、当前编辑节点、AI上下文等)
- 使用
localStorage
持久化当前论文内容(防止断网或退出丢失)
🧪 页面交互流程(简化)
1 | 用户登录 |
🧩 推荐依赖清单(部分)
1 | npm install vue-router pinia axios element-plus tiptap @tiptap/vue-3 markdown-it pdfjs-dist vue-pdf-embed vuedraggable |
🚀 后续可拓展功能
- 支持多人协作编辑(WebSocket)
- 引用管理(文献库 + BibTeX 解析)
- 编辑历史版本回退
- AI 风格选择(科普、学术、简洁)