# appframework **Repository Path**: rufeng-2008/appframework ## Basic Information - **Project Name**: appframework - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-15 - **Last Updated**: 2026-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Tauri 桌面应用通用架构框架 > 基于 CC Switch 项目架构提炼的通用模板,适用于任何 Tauri 2.x 桌面应用开发。 ## 技术栈 | 层级 | 技术 | 版本 | |------|------|------| | **前端框架** | React + TypeScript | 18.x | | **构建工具** | Vite | 7.x | | **样式** | Tailwind CSS + Radix UI | 3.x | | **状态管理** | TanStack React Query | 5.x | | **表单** | react-hook-form + zod | 最新 | | **国际化** | i18next / react-i18next | 最新 | | **动画** | Framer Motion | 最新 | | **后端** | Rust + Tauri | 2.x | | **数据库** | SQLite (rusqlite) | bundled | | **异步运行时** | tokio (multi-thread) | 最新 | | **HTTP** | axum + reqwest | 最新 | ## 架构分层 ``` ┌─────────────────────────────────────────────┐ │ Frontend (React + Vite) │ │ Components → Hooks → API Layer → invoke() │ ├─────────────────────────────────────────────┤ │ Tauri Command Layer (IPC) │ │ commands/*.rs (#[tauri::command]) │ ├─────────────────────────────────────────────┤ │ Service Layer (业务逻辑) │ │ services/*.rs (纯 Rust 逻辑) │ ├─────────────────────────────────────────────┤ │ Data Layer (数据持久化) │ │ database/dao/*.rs → SQLite (rusqlite) │ ├─────────────────────────────────────────────┤ │ System Layer (系统集成) │ │ tray/ · proxy/ · config/ · deeplink/ │ └─────────────────────────────────────────────┘ ``` ## 目录结构 ``` tauri-app-framework/ ├── src/ # 前端源码 │ ├── App.tsx # 主应用组件 │ ├── main.tsx # 入口 │ ├── components/ # UI 组件 │ │ ├── ui/ # 基础 UI 组件(Radix 封装) │ │ └── settings/ # 设置面板 │ ├── lib/ # 工具库 │ │ ├── api/ # Tauri IPC API 封装 │ │ └── query/ # React Query 配置 │ ├── hooks/ # 自定义 Hooks │ ├── contexts/ # React Context │ ├── i18n/ # 国际化 │ ├── types/ # TypeScript 类型 │ ├── utils/ # 工具函数 │ └── styles/ # 全局样式 │ ├── src-tauri/ # Rust 后端 │ ├── src/ │ │ ├── lib.rs # 应用入口 + setup │ │ ├── main.rs # 程序入口 │ │ ├── commands/ # Tauri 命令(IPC 接口) │ │ ├── services/ # 业务逻辑层 │ │ ├── database/ # SQLite 数据库 │ │ │ ├── mod.rs # Database 初始化 │ │ │ ├── schema.rs # 表结构 + 迁移 │ │ │ └── dao/ # 数据访问对象 │ │ ├── tray/ # 系统托盘 │ │ ├── proxy/ # HTTP 代理(可选) │ │ ├── config/ # 配置文件读写 │ │ └── store.rs # 全局状态 (AppState) │ ├── Cargo.toml │ ├── tauri.conf.json │ └── build.rs │ ├── package.json ├── vite.config.ts ├── tailwind.config.cjs ├── tsconfig.json ├── pnpm-workspace.yaml └── docs/ # 文档 ``` ## 核心设计模式 ### 1. 命令模式 (Command Pattern) 前端通过 `invoke()` 调用 Rust 命令,命令层仅做参数校验和转发,不含业务逻辑。 ### 2. 服务层模式 (Service Pattern) 所有业务逻辑封装在 `services/` 中,命令层调用服务层,服务层调用 DAO 层。 ### 3. DAO 模式 (Data Access Object) 数据库操作通过 DAO 封装,每个实体一个 DAO 文件,提供标准 CRUD。 ### 4. 全局状态模式 (AppState) 使用 `tokio::sync::RwLock` 或 `Mutex` 包装的全局状态,通过 Tauri 的 `manage()` 注入。 ### 5. 事件驱动模式 (Event-Driven) 后端通过 `emit()` 向前端推送事件,前端通过 `listen()` 监听,实现双向通信。 ## 快速开始 ```bash # 安装依赖 pnpm install # 开发模式 pnpm tauri dev # 构建 pnpm tauri build ```