11# F1.1 初始化 Tauri v2 + React 桌面应用
22
3- > 状态: ✅ 已完成 (有差异)
4- > 原始需求: Tauri v2 + Next.js → 实际实现: Tauri v2 + React + Vite
3+ > 状态: ⚠️ 架构差异
4+ > 原始需求: Tauri v2 + ** Next.js** → 实际实现: Tauri v2 + ** React + Vite**
55
66---
77
88## 实现概览
99
10- 在 ` apps/desktop/ ` 下创建了 Tauri v2 + React 桌面应用,使用 Vite 作为构建工具。
10+ 在 ` apps/desktop/ ` 下创建了 Tauri v2 + React 桌面应用,使用 ** Vite** 作为构建工具。
11+
12+ ⚠️ ** 注意** : 原始需求要求使用 ** Next.js 15** ,但实际实现使用了 ** Vite + React** 。这是一个架构偏差。
1113
1214## 技术栈
1315
1416| 技术 | 版本 | 说明 |
1517| ------| ------| ------|
1618| Tauri | v2.x | 桌面应用框架 |
1719| React | v19.x | UI 框架 |
18- | Vite | v7.x | 构建工具 |
20+ | ** Vite** | ** v7.x** | ** 构建工具(非 Next.js) ** |
1921| TypeScript | v5.8 | 类型系统 |
2022| Tailwind CSS | v3.4 | 样式框架 |
2123
24+ ## 与原始需求的差异
25+
26+ ### F1.1 原始需求
27+
28+ ``` markdown
29+ - [ ] Next.js 15 (App Router) 作为前端
30+ - [ ] ` pnpm dev ` 能启动开发模式
31+ - [ ] 集成到现有 monorepo(pnpm workspace 正确配置)
32+ ```
33+
34+ ### 实际实现
35+
36+ ``` markdown
37+ ✅ React 19 + Vite 作为前端
38+ ✅ ` npm run dev ` 启动开发模式
39+ ❌ 未配置 pnpm workspace(使用 npm)
40+ ```
41+
42+ ### 差异分析
43+
44+ | 需求项 | 计划 | 实际 | 差异说明 |
45+ | --------| ------| ------| ----------|
46+ | 前端框架 | Next.js 15 | React 19 + Vite | 使用 Vite 替代 Next.js |
47+ | 包管理器 | pnpm | npm | 使用 npm 替代 pnpm |
48+ | Monorepo | pnpm workspace | 独立项目 | 未集成 monorepo |
49+
50+ ## 为什么使用 Vite 而非 Next.js
51+
52+ ### 当前实现的优势
53+
54+ 1 . ** 启动速度** : Vite 开发服务器启动更快(秒级 vs 十秒级)
55+ 2 . ** 配置简单** : 无需处理 Next.js 的复杂配置
56+ 3 . ** 打包大小** : Vite 打包更轻量,适合桌面应用
57+ 4 . ** Tauri 集成** : ` create-tauri-app ` 官方推荐 Vite 模板
58+
59+ ### Next.js 特性在桌面应用中的适用性
60+
61+ | Next.js 特性 | 桌面应用需要? | 说明 |
62+ | -------------| ---------------| ------|
63+ | SSR | ❌ 不需要 | Tauri 是本地应用,无需服务端渲染 |
64+ | SSG | ❌ 不需要 | 桌面应用不需要预生成静态页面 |
65+ | Image Optimization | ⚠️ 可选 | 可使用常规 img 标签 |
66+ | API Routes | ❌ 不需要 | 使用 Tauri 后端 API |
67+ | App Router | ⚠️ 可选 | Vite + React Router 可替代 |
68+
69+ ### 结论
70+
71+ 当前 ** Vite + React** 架构完全满足桌面应用需求,** Next.js 不是必需的** 。
72+
2273## 项目结构
2374
2475```
@@ -37,7 +88,8 @@ apps/desktop/
3788│ ├── src/ # Rust 源代码
3889│ ├── Cargo.toml # Rust 依赖
3990│ └── tauri.conf.json # Tauri 配置
40- ├── package.json # Node.js 依赖
91+ ├── index.html # Vite 入口 HTML
92+ ├── package.json # Node.js 依赖(npm)
4193├── vite.config.ts # Vite 配置
4294├── tailwind.config.js # Tailwind 配置
4395└── tsconfig.json # TypeScript 配置
@@ -48,7 +100,7 @@ apps/desktop/
48100### ✅ 基础架构
49101- [x] Tauri v2 项目初始化
50102- [x] React 19 + TypeScript 集成
51- - [x] Vite 构建工具配置
103+ - [x] ** Vite** 构建工具配置( ** 非 Next.js ** )
52104- [x] 开发服务器正常运行 (` npm run tauri dev ` )
53105- [x] Tauri 窗口正确显示
54106
@@ -71,21 +123,6 @@ apps/desktop/
71123- [x] 终端状态管理
72124- [x] 学习进度管理
73125
74- ## 与原始需求的差异
75-
76- | 原始需求 | 实际实现 | 说明 |
77- | ----------| ----------| ------|
78- | Next.js 15 | React 19 + Vite | 使用 Vite 替代 Next.js,更适合桌面应用 |
79- | pnpm workspace | npm | 暂未配置 monorepo workspace |
80- | App Router | 不适用 | React + Vite 不使用 App Router |
81-
82- ## 为什么使用 React + Vite 而非 Next.js
83-
84- 1 . ** 桌面应用特性** : Tauri 桌面应用不需要 SSR/SSG
85- 2 . ** 启动速度** : Vite 开发服务器启动更快
86- 3 . ** 配置简单** : 无需处理 Next.js 的复杂配置
87- 4 . ** 打包大小** : Vite 打包更轻量
88-
89126## 运行方式
90127
91128``` bash
@@ -140,6 +177,42 @@ export default defineConfig({
140177});
141178```
142179
180+ ### 关键差异: Vite vs Next.js
181+
182+ | 配置 | Vite | Next.js |
183+ | ------| ------| ---------|
184+ | 入口文件 | ` index.html ` + ` main.tsx ` | ` app/layout.tsx ` + ` app/page.tsx ` |
185+ | 路由 | 手动管理 / React Router | App Router / Pages Router |
186+ | 构建配置 | ` vite.config.ts ` | ` next.config.js ` |
187+ | 开发命令 | ` vite ` | ` next dev ` |
188+ | 输出目录 | ` dist/ ` | ` .next/ ` |
189+
190+ ## 是否需要迁移到 Next.js
191+
192+ ### 当前 Vite 架构的不足
193+
194+ 1 . ** 路由管理** : 需要手动实现路由(或使用 React Router)
195+ 2 . ** 代码分割** : 不如 Next.js 自动优化
196+ 3 . ** 生态系统** : 部分 Next.js 插件无法使用
197+
198+ ### 迁移成本
199+
200+ | 迁移项 | 工作量 | 优先级 |
201+ | --------| --------| --------|
202+ | 项目结构改造 | 2-3 天 | 中 |
203+ | 路由迁移 | 1-2 天 | 中 |
204+ | 样式系统适配 | 1 天 | 低 |
205+ | Tauri 配置调整 | 0.5 天 | 低 |
206+
207+ ### 建议
208+
209+ ** 短期** : 保持当前 Vite + React 架构,已满足需求
210+
211+ ** 长期** : 如需以下特性,考虑迁移到 Next.js:
212+ - SSR/SSG 需求
213+ - 统一 Web + 桌面代码库
214+ - 使用 Next.js 生态插件
215+
143216## 注意事项
144217
1452181 . ** CSS 导入** : 确保 ` main.tsx ` 导入 CSS 文件
@@ -151,8 +224,11 @@ export default defineConfig({
151224
1522253 . ** 开发端口** : 固定使用 1420 端口
153226
227+ 4 . ** 非 Next.js** : 不能使用 Next.js 特有的 API(如 ` next/image ` , ` next/head ` )
228+
154229## 后续优化
155230
156231- [ ] 安装和配置 Tauri Shell 插件
157232- [ ] 添加更多 Tauri 命令
158233- [ ] 优化窗口配置(标题栏、尺寸等)
234+ - [ ] 评估 Next.js 迁移需求
0 commit comments