# 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!