# appframework-new **Repository Path**: rufeng-2008/appframework-new ## Basic Information - **Project Name**: appframework-new - **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-21 - **Last Updated**: 2026-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Tauri 桌面应用通用架构框架 > 基于 Tauri 2.x + React 18 + TypeScript 的桌面应用开发模板。 [![CI](https://github.com/user/tauri-app/actions/workflows/ci.yml/badge.svg)](https://github.com/user/tauri-app/actions/workflows/ci.yml) ## 技术栈 | 层级 | 技术 | 版本 | |------|------|------| | **前端框架** | React + TypeScript | 18.x / 5.x | | **构建工具** | Vite | 6.x | | **样式** | Tailwind CSS + Radix UI | 3.x | | **状态管理** | TanStack React Query + Zustand | 5.x | | **表单** | react-hook-form + zod | 最新 | | **国际化** | i18next / react-i18next | 最新 | | **测试** | Vitest + Testing Library | 2.x | | **后端** | Rust + Tauri | 2.x | | **数据库** | SQLite (rusqlite) | bundled | | **异步运行时** | tokio (multi-thread) | 最新 | | **测试框架** | cargo test | 内置 | ## 架构分层 ``` ┌─────────────────────────────────────────────┐ │ Frontend (React + Vite) │ │ Components → Hooks → API Layer → invoke() │ │ Zustand Stores → Global UI State │ ├─────────────────────────────────────────────┤ │ Tauri Command Layer (IPC) │ │ commands/*.rs (#[tauri::command]) │ ├─────────────────────────────────────────────┤ │ Service Layer (业务逻辑) │ │ services/*.rs (纯 Rust 逻辑) │ ├─────────────────────────────────────────────┤ │ Data Layer (数据持久化) │ │ database/dao/*.rs → SQLite (rusqlite) │ ├─────────────────────────────────────────────┤ │ System Layer (系统集成) │ │ tray/ · config/ · store · error │ └─────────────────────────────────────────────┘ ``` ## 目录结构 ``` tauri-app-framework/ ├── src/ # 前端源码 │ ├── App.tsx # 主应用组件 │ ├── main.tsx # 入口 │ ├── components/ # UI 组件 │ │ ├── ui/ # 基础 UI 组件(Radix 封装) │ │ └── AppLayout.tsx # 应用布局 │ ├── stores/ # Zustand 全局状态 │ ├── lib/ # 工具库 │ │ ├── api/ # Tauri IPC API 封装 │ │ ├── query/ # React Query 配置 │ │ └── schemas/ # Zod 验证 Schema │ ├── hooks/ # 自定义 Hooks │ ├── 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/ # 系统托盘 │ │ ├── config/ # 配置文件读写 │ │ ├── store.rs # 全局状态 (AppState) │ │ └── error.rs # 统一错误类型 │ ├── tests/ # 集成测试 │ ├── Cargo.toml │ ├── tauri.conf.json │ └── build.rs │ ├── .github/workflows/ # CI/CD │ └── ci.yml ├── package.json ├── vite.config.ts ├── vitest.config.ts ├── tailwind.config.cjs ├── tsconfig.json └── pnpm-workspace.yaml ``` ## 核心设计模式 ### 1. 命令模式 (Command Pattern) 前端通过 `invoke()` 调用 Rust 命令,命令层仅做参数校验和转发,不含业务逻辑。 ### 2. 服务层模式 (Service Pattern) 所有业务逻辑封装在 `services/` 中,命令层调用服务层,服务层调用 DAO 层。 ### 3. DAO 模式 (Data Access Object) 数据库操作通过 DAO 封装,每个实体一个 DAO 文件,提供标准 CRUD。 ### 4. 全局状态模式 (AppState) - 后端:`std::sync::Mutex`(SQLite 同步)+ `tokio::sync::RwLock`(异步缓存) - 前端:TanStack React Query(服务端状态)+ Zustand(客户端状态) ### 5. 统一错误链 ``` DAO Error → Service Error → Command Result (Serialize) → Frontend safeInvoke() ``` ## 快速开始 ```bash # 安装依赖 pnpm install # 开发模式 pnpm tauri dev # 构建 pnpm tauri build # 前端测试 pnpm test # 后端测试 cd src-tauri && cargo test ``` ## 测试覆盖 ### 前端 (Vitest) | 模块 | 测试数 | 覆盖内容 | |------|--------|----------| | utils/index.ts | 14 | cn, formatBytes, formatDate, truncate, deepClone, sleep, generateId | | schemas/common.ts | 14 | requiredString, emailField, urlField, portField, appSettingsSchema, itemFormSchema | ### 后端 (cargo test) | 模块 | 测试数 | 覆盖内容 | |------|--------|----------| | error.rs | 10 | 错误变体转换、序列化 | | config/mod.rs | 4 | JSON/TOML 读写、目录验证 | | database/dao/settings.rs | 6 | CRUD 操作 | | database/schema.rs | 4 | 迁移幂等性、表和索引创建 | | services/settings.rs | 3 | 获取/保存设置、DAO 往返 | | tests/integration_tests.rs | 4 | 跨层集成 CRUD | ## CI/CD GitHub Actions 工作流(`.github/workflows/ci.yml`)包含: - **前端**:TypeScript 类型检查 + Vitest 测试 + 覆盖率报告 - **后端**:Rustfmt 格式检查 + Clippy lint + Cargo test ## 添加 HTTP 功能 如需启用 HTTP 客户端/服务端: 1. 取消 `Cargo.toml` 中 `reqwest` 和 `axum` 的注释 2. 在 `error.rs` 中添加 `Http(String)` 变体和 `From` 转换 ## License MIT