Appearance
项目结构
灵动桌面框架采用前后端分离的目录结构,前端代码在 src/,后端代码在 src-tauri/。
完整目录
my-app/
├── index.html # HTML 入口
├── package.json # 前端依赖
├── vite.config.ts # Vite 配置(路径别名 @/)
├── tsconfig.json # TypeScript 配置
│
├── src/ # ★ 前端源码 (React 19)
│ ├── main.tsx # React 入口
│ ├── App.tsx # 根组件(主题 + 路由)
│ ├── Router.tsx # 路由配置 (HashRouter)
│ ├── theme/ # 主题配置
│ │ └── antdTheme.ts # Ant Design 暗/亮主题
│ ├── styles/ # 全局样式
│ │ ├── variables.css # CSS 设计令牌
│ │ └── global.css # TailwindCSS 全局样式
│ ├── store/ # Zustand 状态管理
│ │ ├── app.ts # UI 状态(主题/侧边栏)
│ │ ├── settings.ts # 设置状态(持久化)
│ │ └── index.ts # 统一导出
│ ├── types/ # TypeScript 类型
│ │ ├── config.ts # 配置相关类型
│ │ ├── system.ts # 系统信息类型
│ │ └── index.ts # 统一导出
│ ├── hooks/ # 自定义 Hooks
│ │ └── useCommand.ts # invoke 封装 + 错误处理
│ ├── lib/ # 工具库
│ │ └── api/ # API 封装
│ │ ├── client.ts # invoke 基础包装
│ │ ├── config.ts # 配置 API
│ │ ├── system.ts # 系统 API
│ │ ├── updater.ts # 更新 API
│ │ └── index.ts # 统一导出
│ ├── components/ # 通用组件
│ │ ├── ui/ # UI 组件
│ │ │ └── ErrorBoundary.tsx # 错误边界
│ │ └── layout/ # 布局组件
│ │ ├── AppLayout.tsx # 主布局
│ │ └── Sidebar.tsx # 侧边栏
│ └── pages/ # 页面组件
│ ├── home/index.tsx # 首页
│ ├── settings/index.tsx # 设置页
│ └── about/index.tsx # 关于页
│
├── src-tauri/ # ★ 后端源码 (Rust)
│ ├── Cargo.toml # Rust 依赖
│ ├── tauri.conf.json # Tauri 核心配置
│ ├── build.rs # 构建脚本
│ ├── capabilities/ # 权限声明
│ │ └── default.json # 默认权限集
│ ├── icons/ # 应用图标
│ └── src/
│ ├── main.rs # Rust 进程入口
│ ├── lib.rs # Builder 中枢(注册插件/命令/状态)
│ ├── error.rs # 错误类型定义
│ ├── state.rs # 全局状态(AppState + Database)
│ ├── tray.rs # 系统托盘
│ ├── models/ # 数据模型
│ │ └── mod.rs # 结构体定义
│ ├── database/ # 数据访问层
│ │ ├── mod.rs # Database + CRUD
│ │ └── schema.rs # Schema 迁移
│ ├── services/ # 业务逻辑层
│ │ ├── mod.rs # 模块导出
│ │ └── config.rs # 配置服务
│ ├── commands/ # IPC 命令层
│ │ ├── mod.rs # 命令导出
│ │ ├── system.rs # 系统命令
│ │ └── config.rs # 配置命令
│ └── shared/ # 工具函数
│ ├── mod.rs
│ └── time_utils.rs
│
└── public/ # 静态资源关键文件说明
src-tauri/tauri.conf.json
Tauri 核心配置,控制窗口尺寸、打包参数、安全策略等。
src-tauri/capabilities/default.json
权限声明文件,定义应用可以使用哪些系统 API(Tauri 2.x 强制要求)。
src/lib/api/
所有前端到后端的调用都封装在这里,禁止在页面中直接使用 invoke()。
vite.config.ts
配置了 @/ 路径别名,指向 src/ 目录。