# tauri-init **Repository Path**: i7606/tauri-init ## Basic Information - **Project Name**: tauri-init - **Description**: 新建Tauri+vue3项目时使用 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-21 - **Last Updated**: 2025-12-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Tauri2 + Vue3 快速开发脚手架(集成模板) > 一个开箱即用、符合常规工程习惯的 **Tauri 2 + Vue 3** 全栈桌面应用脚手架,旨在减少重复配置,提升开发效率,助你快速创建项目。 --- ## 🎯 特性概览 - ✅ **现代化技术栈**:Tauri 2 + Vue 3 + JavaScript + Element Plus + - ✅ **工程结构清晰**:严格分层(`commands` ← `service` ← `db/models`),贴近企业级后端开发习惯 - ✅ **内置数据持久化**:集成 `rusqlite` + 连接池管理,支持本地 SQLite 增删改查 - ✅ **HTTP 客户端封装**:`reqwest` + `scraper` + `client.rs` 统一请求层,支持频率控制与重试 - ✅ **统一响应格式**:`result.rs` 提供标准化 API 返回结构,前后端契约明确 - ✅ **常用工具集成**: - `tauri-plugin-http`:前端发起跨域请求(绕过 CORS) - `tauri-plugin-opener`:打开外部链接/文件 - `moka`:高性能内存缓存(支持 TTL/并发) - `chrono` + `serde`:时间序列与 JSON 序列化深度集成 - ✅ **前端增强体验**: - `Element Plus` + `Arco Design` 双 UI 支持 - `ECharts` 图表支持 - `Monaco Editor` 代码编辑器(预集成 `vite-plugin-monaco-editor`) - `Vue Router` + `Vue DevTools` 插件支持 --- ## 📦 项目结构 ```txt tauri-init/ ├── src-tauri/ # Rust 后端(Tauri 主进程) │ ├── src/ │ │ ├── main.rs # 入口:注册 commands 与插件 │ │ ├── commands.rs # ← 类似 Controller,暴露给前端调用的 API │ │ ├── service.rs # ← 业务逻辑层 │ │ ├── db.rs # ← 数据库连接池 + CRUD 封装 │ │ ├── models.rs # ← ORM 映射结构体(对应表) │ │ ├── dto.rs # ← 数据传输对象(前后端交互专用) │ │ ├── result.rs # ← 统一响应体(code/msg/data) │ │ └── client.rs # ← HTTP/HTML 请求封装(带频率控制) │ └── Cargo.toml # Rust 依赖配置(见下方) │ ├── src/ # Vue 3 前端 │ ├── views/ │ ├── components/ │ ├── router/ │ ├── stores/ # 可选 Pinia │ └── App.vue │ ├── public/ ├── index.html ├── package.json # 前端依赖(见下方) └── README.md ``` ## 🚀 快速开始 ```bash # 1. 克隆模板 git clone https://github.com/your-name/tauri-init.git my-app cd my-app\src # 2. 安装前端依赖 npm install # 3. 启动开发服务(热重载) npm run dev # 4. 启动Tauri cd my-app\src-tauri cargo run ``` --- ## 🛠️ 开发约定 | 模块 | 职责 | 使用示例 | |-------------|------------------------------|------------------------------| | `commands.rs` | 对外暴露的 API(`#[tauri::command]`) | `get_fund_list`, `add_record` | | `service.rs` | 业务逻辑编排 | 数据清洗、组合查询、策略计算 | | `db.rs` | 数据库连接 + 事务 + CRUD | `query_one`, `batch_insert` | | `models.rs` | 表结构体(带 `#[derive(Serialize, Queryable)]`) | `Fund { code, name, nav }` | | `dto.rs` | 请求/响应 DTO(可含校验逻辑)| `CreateFundReq`, `FundResp` | | `result.rs` | 统一返回:`{ code: 0, msg: "ok", data: T }` | `Result::success(data)` | | `client.rs` | 封装 `reqwest::Client`,支持:
• 自动 User-Agent
• 请求间隔控制
• 失败重试
• HTML 解析工具链 | `client.get_json(url).await?` | --- ## 🔐 安全与性能提示 - ✅ **SQLite 安全**:所有 SQL 查询均推荐使用 **参数绑定**(`?` 占位),避免拼接 SQL 防注入。 - ✅ **异步隔离**:耗时操作(如网络请求、大量计算)务必在 `tokio::spawn` 中执行,避免阻塞主线程。 - ✅ **缓存策略**:高频小数据用 `moka`,大文件/配置用 `dirs::config_dir()` + JSON 文件持久化。 - ⚠️ **Tauri 插件限制**:`tauri-plugin-http` 仅用于前端调用(绕过 CORS),后端仍建议用 `reqwest`。 --- ## 📬 贡献与反馈 欢迎提 Issue 或 PR!