Skip to content

项目架构 ​

⚠️ 免责声明

本文档由 GLM4.7 自动生成,内容可能存在错误或不完整之处。 请以人工书写的官方文档为准。


应用架构 ​

LibGuideBook 采用经典的 Vue 3 单页应用架构。

核心模块 ​

App.vue
    ↓
MainLayout.vue
    ↓
路由 (Vue Router)
    ↓
页面组件
    ├─ ManualListPage.vue   (手册列表)
    ├─ ManualEditorPage.vue (编辑器)
    └─ ManualRunnerPage.vue (运行器)
    ↓
工具组件
    ├─ TimerTool.vue
    ├─ CalculatorTool.vue
    └─ FormulaTool.vue

状态管理 ​

使用 Pinia 进行全局状态管理。

manual-store ​

手册数据管理:

typescript
interface ManualStore {
  manuals: Manual[]           // 所有手册
  loaded: boolean             // 是否已加载

  // 操作
  load()                      // 从 localStorage 加载
  save()                      // 保存到 localStorage
  createManual()              // 创建新手册
  updateManual()              // 更新手册
  removeManual()              // 删除手册
  addStep()                   // 添加步骤
  updateStep()                // 更新步骤
  removeStep()                // 删除步骤
  addToolBinding()            // 添加工具绑定
  // ... 更多操作
}

run-store ​

运行状态管理:

typescript
interface RunStore {
  currentStepIndex: number    // 当前步骤索引
  toolStates: Record<string, unknown>  // 工具状态
  confirmations: Record<string, boolean> // 确认状态
}

路由配置 ​

typescript
const routes = [
  { path: '/', component: IndexPage },
  { path: '/manuals', component: ManualListPage },
  { path: '/manuals/:id/edit', component: ManualEditorPage },
  { path: '/manuals/:id/run', component: ManualRunnerPage },
  { path: '/:catchAll(.*)*', component: ErrorNotFound }
]

工具组件 ​

TimerTool ​

计时器组件,支持:

  • 秒表模式
  • 倒计时模式
  • 从公式获取初始值

CalculatorTool ​

计算器组件:

  • 基础四则运算
  • 历史记录
  • 清空功能

FormulaTool ​

公式工具组件:

  • 表达式求值
  • JavaScript 代码执行
  • 参数配置
  • 测试功能

工具函数 ​

math.ts ​

数学表达式求值:

typescript
function evaluateExpression(expr: string): number

jsEval.js ​

JavaScript 代码执行:

typescript
function runJS(
  code: string,
  params: Record<string, number>,
  output: string,
  context: Record<string, unknown>
): unknown

storage.ts ​

本地存储封装:

typescript
function loadManuals<T>(): T | null
function saveManuals(data: unknown): void

数据流 ​

编辑流程 ​

用户操作
    ↓
ManualEditorPage.vue
    ↓
manual-store (Pinia)
    ↓
localStorage

运行流程 ​

选择手册
    ↓
ManualRunnerPage.vue
    ↓
run-store (Pinia)
    ↓
工具组件
    ↓
更新状态

预设系统 ​

预设手册存储在 src/presets/*.json:

json
{
  "id": "preset-xxx",
  "name": "预设手册名称",
  "tags": ["preset"],
  "steps": [...]
}

预设手册:

  • 应用启动时自动加载
  • 不可删除
  • 可以覆盖

← 返回开发者文档