新增: Tauri 2.0 桌面版脚手架(B0)
- src-tauri/ 完整项目结构: Cargo.toml / build.rs / tauri.conf.json - Rust 入口 lib.rs: ping IPC 命令验证双向通信 - 应用图标生成(SVG → ico/icns/png 多尺寸) - Tauri 窗口配置: 1280×800, 最小 900×600, 可缩放 - package.json 新增 tauri / tauri:dev / tauri:build 脚本 - vite.config.ts 环境检测: Tauri 模式端口 5173, Web 模式 8080 - @tauri-apps/cli + @tauri-apps/api 依赖安装 - cargo check 编译通过,前端构建不受影响 - 桌面版与 Web 版共享同一套前端代码
4383
src-tauri/Cargo.lock
generated
Normal file
19
src-tauri/Cargo.toml
Normal file
@@ -0,0 +1,19 @@
|
||||
[package]
|
||||
name = "u-ppt"
|
||||
version = "1.0.0"
|
||||
description = "在线演示工具 - 桌面版"
|
||||
authors = ["u-ppt"]
|
||||
edition = "2021"
|
||||
rust-version = "1.77"
|
||||
|
||||
[lib]
|
||||
name = "u_ppt_lib"
|
||||
crate-type = ["staticlib", "cdylib", "rlib"]
|
||||
|
||||
[build-dependencies]
|
||||
tauri-build = { version = "2", features = [] }
|
||||
|
||||
[dependencies]
|
||||
tauri = { version = "2", features = [] }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
10
src-tauri/app-icon.svg
Normal file
@@ -0,0 +1,10 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
|
||||
<rect width="512" height="512" rx="96" fill="#4f46e5"/>
|
||||
<rect x="128" y="120" width="256" height="272" rx="16" fill="#fff"/>
|
||||
<rect x="160" y="160" width="192" height="8" rx="4" fill="#4f46e5"/>
|
||||
<rect x="160" y="184" width="160" height="6" rx="3" fill="#c7d2fe"/>
|
||||
<rect x="160" y="204" width="176" height="6" rx="3" fill="#c7d2fe"/>
|
||||
<rect x="160" y="224" width="128" height="6" rx="3" fill="#c7d2fe"/>
|
||||
<circle cx="272" cy="312" r="40" fill="#06b6d4"/>
|
||||
<rect x="150" y="300" width="80" height="56" rx="8" fill="#818cf8"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 631 B |
3
src-tauri/build.rs
Normal file
@@ -0,0 +1,3 @@
|
||||
fn main() {
|
||||
tauri_build::build()
|
||||
}
|
||||
BIN
src-tauri/icons/128x128.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
src-tauri/icons/128x128@2x.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
src-tauri/icons/32x32.png
Normal file
|
After Width: | Height: | Size: 514 B |
BIN
src-tauri/icons/64x64.png
Normal file
|
After Width: | Height: | Size: 838 B |
BIN
src-tauri/icons/Square107x107Logo.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
src-tauri/icons/Square142x142Logo.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
src-tauri/icons/Square150x150Logo.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
src-tauri/icons/Square284x284Logo.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
src-tauri/icons/Square30x30Logo.png
Normal file
|
After Width: | Height: | Size: 530 B |
BIN
src-tauri/icons/Square310x310Logo.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
src-tauri/icons/Square44x44Logo.png
Normal file
|
After Width: | Height: | Size: 693 B |
BIN
src-tauri/icons/Square71x71Logo.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
src-tauri/icons/Square89x89Logo.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
src-tauri/icons/StoreLogo.png
Normal file
|
After Width: | Height: | Size: 743 B |
BIN
src-tauri/icons/icon.icns
Normal file
BIN
src-tauri/icons/icon.ico
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
src-tauri/icons/icon.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
19
src-tauri/src/lib.rs
Normal file
@@ -0,0 +1,19 @@
|
||||
/* =====================================================================
|
||||
* lib.rs — Tauri 应用入口(B0 脚手架)
|
||||
*
|
||||
* 当前阶段:Vue 前端原样跑在 WebView 里,Rust 端只有 ping 验证 IPC。
|
||||
* 后续 B1-B5 逐步迁移核心逻辑到 Rust。
|
||||
* ===================================================================== */
|
||||
|
||||
/// IPC 验证命令:前端 invoke('ping') → 返回 'pong'
|
||||
#[tauri::command]
|
||||
fn ping() -> String {
|
||||
"pong".to_string()
|
||||
}
|
||||
|
||||
pub fn run() {
|
||||
tauri::Builder::default()
|
||||
.invoke_handler(tauri::generate_handler![ping])
|
||||
.run(tauri::generate_context!())
|
||||
.expect("error while running tauri application");
|
||||
}
|
||||
6
src-tauri/src/main.rs
Normal file
@@ -0,0 +1,6 @@
|
||||
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
|
||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||
|
||||
fn main() {
|
||||
u_ppt_lib::run()
|
||||
}
|
||||
39
src-tauri/tauri.conf.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"$schema": "https://schema.tauri.app/config/2",
|
||||
"productName": "u-ppt",
|
||||
"version": "1.0.0",
|
||||
"identifier": "com.uppt.desktop",
|
||||
"build": {
|
||||
"frontendDist": "../dist",
|
||||
"devUrl": "http://localhost:5173",
|
||||
"beforeDevCommand": "npm run dev",
|
||||
"beforeBuildCommand": "npm run build"
|
||||
},
|
||||
"app": {
|
||||
"windows": [
|
||||
{
|
||||
"title": "u-ppt · 在线演示工具",
|
||||
"width": 1280,
|
||||
"height": 800,
|
||||
"minWidth": 900,
|
||||
"minHeight": 600,
|
||||
"resizable": true,
|
||||
"fullscreen": false
|
||||
}
|
||||
],
|
||||
"security": {
|
||||
"csp": null
|
||||
}
|
||||
},
|
||||
"bundle": {
|
||||
"active": true,
|
||||
"targets": "all",
|
||||
"icon": [
|
||||
"icons/32x32.png",
|
||||
"icons/128x128.png",
|
||||
"icons/128x128@2x.png",
|
||||
"icons/icon.icns",
|
||||
"icons/icon.ico"
|
||||
]
|
||||
}
|
||||
}
|
||||