Skip to content

架构设计

了解 LTools 的整体架构设计和技术选型。

系统架构

LTools 采用前后端分离的桌面应用架构:

┌─────────────────────────────────────────────────────────────┐
│                         前端层 (React)                       │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐        │
│  │ 主界面    │ │ 插件视图  │ │ 搜索窗口 │ │ 设置页面  │        │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘        │
│                           │                                  │
│                    React Router v6                           │
│                           │                                  │
│                    @wailsio/runtime                          │
└───────────────────────────┬─────────────────────────────────┘

┌───────────────────────────┼─────────────────────────────────┐
│                      Wails Bridge                           │
│                    (IPC 通信层)                              │
└───────────────────────────┬─────────────────────────────────┘

┌───────────────────────────┼─────────────────────────────────┐
│                         后端层 (Go)                          │
│  ┌────────────────────────────────────────────────────┐    │
│  │                  插件管理器                          │    │
│  │  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐  │    │
│  │  │ 日期时间 │ │ 计算器  │ │剪贴板管理│ │ ...      │  │    │
│  │  └─────────┘ └─────────┘ └─────────┘ └──────────┘  │    │
│  └────────────────────────────────────────────────────┘    │
│                            │                                │
│  ┌──────────┐  ┌──────────┐ │ ┌──────────┐  ┌──────────┐   │
│  │ 快捷键服务 │  │ 搜索服务  │ │ │ 代理服务  │  │ 窗口服务  │   │
│  └──────────┘  └──────────┘ │ └──────────┘  └──────────┘   │
└───────────────────────────┬─────────────────────────────────┘

                    ┌───────┴───────┐
                    │   Go 标准库    │
                    │  gopsutil     │
                    │  screenshot   │
                    └───────────────┘

核心模块

1. 插件系统

设计理念

  • 基于接口的插件架构
  • 统一的生命周期管理
  • 权限控制系统

核心组件

go
// 插件接口
type Plugin interface {
    Metadata() *PluginMetadata
    Init(app *application.App) error
    ServiceStartup(app *application.App) error
    ServiceShutdown(app *application.App) error
    Enabled() bool
    SetEnabled(enabled bool) error
}

// 插件管理器
type Manager struct {
    plugins  map[string]Plugin
    registry *Registry
    mu       sync.RWMutex
}

2. 服务层

服务注册

  • 每个插件可提供服务
  • 服务通过 Wails 暴露给前端
  • 自动生成 TypeScript 绑定

示例

go
// 后端
type MyPluginService struct { /* ... */ }

func (s *MyPluginService) DoSomething() string {
    return "result"
}

// 注册
app.RegisterService(application.NewService(service))

// 前端调用
import { MyPluginService } from './bindings'
const result = await MyPluginService.DoSomething()

3. 事件系统

事件流

后端 → app.Event.Emit("event:name", data)

Wails Bridge

前端 → Events.On("event:name", callback)

使用场景

  • 状态更新通知
  • 后台任务进度
  • 用户操作反馈

4. 快捷键系统

两层架构

┌─────────────────┐
│ ShortcutManager │ ← 持久化存储
└────────┬────────┘

┌────────▼────────┐
│ ShortcutService │ ← 运行时注册
└────────┬────────┘

    ┌────▼────┐
    │ gohook  │ ← 全局热键
    └─────────┘

数据流

1. 用户操作流程

用户点击按钮

前端组件处理

调用后端服务方法

后端执行业务逻辑

返回结果/发送事件

前端更新 UI

2. 全局搜索流程

用户输入关键词

前端调用 SearchWindowService.Search()

后端搜索插件、应用、文件

返回搜索结果

前端显示结果列表

用户选择并打开

技术选型

后端技术

技术用途原因
Go 1.25+核心语言性能、并发、跨平台
Wails v3桌面框架轻量、原生、现代化
gohook全局热键跨平台、可靠
gopsutil系统信息功能全面、跨平台

前端技术

技术用途原因
React 18.2UI 框架生态丰富、组件化
TypeScript 5.2类型系统类型安全、开发体验
Vite 5构建工具快速、现代
TailwindCSS 4样式方案原子化、高效
React Router v6路由管理功能完整、易用

设计模式

1. 插件模式

每个插件遵循统一的接口:

  • 定义清晰的接口规范
  • 支持可选的生命周期方法
  • 提供基础实现(BasePlugin)

2. 服务模式

插件通过服务暴露功能:

  • 服务与插件分离
  • 自动生成绑定
  • 类型安全调用

3. 事件驱动

组件间通过事件通信:

  • 松耦合
  • 异步通知
  • 易于扩展

4. 仓储模式

数据持久化:

  • Registry 管理插件状态
  • JSON 文件存储
  • 自动加载和保存

性能优化

1. 前端优化

  • 路由懒加载
  • 组件代码分割
  • 虚拟滚动
  • 图片懒加载

2. 后端优化

  • Goroutine 并发处理
  • 缓存机制
  • 索引优化
  • 延迟加载

3. 通信优化

  • 事件防抖
  • 批量请求
  • 数据压缩
  • 缓存策略

安全考虑

1. 权限系统

  • 细粒度权限控制
  • 用户授权机制
  • 权限持久化

2. 数据安全

  • 本地加密存储
  • 敏感数据保护
  • 不上传用户数据

3. 代码安全

  • 输入验证
  • 错误处理
  • 资源清理

扩展性

1. 插件扩展

  • 支持第三方插件
  • 插件市场(计划中)
  • 插件沙箱隔离

2. 功能扩展

  • 自定义主题
  • 插件配置
  • API 扩展

3. 平台扩展

  • 跨平台支持
  • 平台特定功能
  • 自适应 UI

未来规划

短期

  • [ ] 插件热重载
  • [ ] 插件市场
  • [ ] 云同步

中期

  • [ ] 第三方插件支持
  • [ ] 自定义主题
  • [ ] 脚本支持

长期

  • [ ] AI 集成
  • [ ] 协作功能
  • [ ] 移动端支持

基于 MIT 许可证发布