跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Rust大前端

Leptos + Tauri 2 实战:Trunk 配置与移动端热重载指南

Leptos 结合 Tauri 2 开发桌面应用时,需采用 SSG 模式而非 SSR。关键配置包括在 Trunk 中设置 ws_protocol 为 ws 以支持移动端热重载,并在 Tauri 配置中开启 withGlobalTauri 以便 WASM 调用 API。通过合理配置 tauri.conf.json 和 Trunk.toml,可实现从开发到构建的一站式流程,解决白屏、热重载失效及 API 不可用等常见问题。

Kubernet发布于 2026/4/5更新于 2026/9/855 浏览

三个关键配置点

1. 坚持使用 SSG

Tauri 的工作方式更接近静态站点宿主,它负责加载 HTML、CSS、JS 和 WASM。官方明确不支持基于服务器的 SSR 方案,所以必须走 SSG/SPA/MPA 这类静态路线。这意味着在 Leptos 里跑的是客户端渲染的 WASM 前端,而不是把服务端渲染也塞进去。

2. 移动端热重载协议

开发时如果连真机或模拟器,WebSocket 连接容易因为网络环境出问题。建议在 Trunk 里显式指定 ws_protocol = "ws",确保热重载能正常握手。

3. 全局对象注入

WASM 要调用 Tauri API,通常通过浏览器全局对象拿到 window.__TAURI__。需要在 Tauri 配置里打开 app.withGlobalTauri = true,这样全局对象才会被注入。

Tauri 配置文件

将以下配置合并进 src-tauri/tauri.conf.json:

{
  "build": {
    "beforeDevCommand": "trunk serve",
    "devUrl": "http://localhost:1420",
    "beforeBuildCommand": "trunk build",
    "frontendDist": "../dist"
  },
  "app": {
    "withGlobalTauri": true
  }
}

这里主要解决几个问题:

  • beforeDevCommand:执行 cargo tauri dev 时自动启动 Trunk 服务。
  • devUrl:开发模式加载的地址,需与 Trunk 端口一致。
  • beforeBuildCommand:打包前自动编译静态资源。
  • frontendDist:构建输出目录,注意是相对于 src-tauri/ 的路径。
  • withGlobalTauri:注入全局对象供 WASM 访问。

Trunk 构建配置

在项目根目录创建或修改 Trunk.toml:

[build]
target = "./index.html"

[watch]
ignore = ["./src-tauri"]

[serve]
port = 1420
open = false
ws_protocol = "ws"

重点说明:

  • [build].target:指定入口页面,Trunk 以此组织资源和 WASM 输出。
  • [watch].ignore:忽略 Rust/Tauri 工程目录,避免无意义的重编译或文件句柄压力。
  • [serve].ws_protocol:移动端热重载稳定性的关键项。

开发与构建命令

配置好后,实际只需要记住两条命令:

开发(桌面):

cargo tauri dev

发布构建:

cargo tauri build

因为已经在 tauri.conf.json 里配置了前置命令,通常不需要手动先跑 trunk serve/build。

WASM 调用 Tauri API

开启 withGlobalTauri 后,window.__TAURI__ 就会存在。在 Leptos/WASM 里常见做法是:

  • 用 wasm-bindgen / web-sys 从 window 上取 __TAURI__
  • 再调用需要的模块(如 event、window、path、plugin 等)

如果你更偏工程化,也可以在前端封装一层 thin wrapper,把 Tauri 能力包装成少量 JS 函数,让 WASM 去调,边界更清晰,类型也更可控。

常见问题排查

  • 启动后白屏,但浏览器访问正常 优先检查 tauri.conf.json 里的 devUrl 端口是否与 Trunk 一致,以及是否成功启动了 trunk serve。

  • 热重载在移动端不工作 先确认 Trunk.toml 里 ws_protocol = "ws" 已设置。

  • WASM 里拿不到 window.__TAURI__ 检查 app.withGlobalTauri 是否为 true,并确认你是在 Tauri 窗口里运行,而非纯浏览器环境。

目录

  1. 三个关键配置点
  2. 1. 坚持使用 SSG
  3. 2. 移动端热重载协议
  4. 3. 全局对象注入
  5. Tauri 配置文件
  6. Trunk 构建配置
  7. 开发与构建命令
  8. WASM 调用 Tauri API
  9. 常见问题排查

更多推荐文章

查看全部
  • AIGC 插画生成技术解析与 Python 实战
  • VSCode Git 多工作树管理:高效分支开发与调试
  • OpenClaw 多 Agent 路由:Gateway 如何托管多个 AI 大脑
  • 大语言模型 (LLM) 是什么?
  • Linux 环境下 Git 版本控制工具使用指南
  • TDM-GCC 安装与 CMake 打包 C++ 游戏代码
  • 基于 OpenClaw 实现 AI 自动盯盘与策略复现
  • SpringAI Agent 开发实战:利用 Skills 构建代码评审工具
  • CISP 注册信息安全专业人员认证指南与职业价值解析
  • 词岛 AI 功能解析:学术写作与 AIGC 降重工具评测
  • OpenCV 基本阈值操作详解
  • OpenClaw 安装与飞书机器人接入完整教程
  • 基于 AutoGen 框架快速构建 AI Agent 实现自动化绘图任务
  • Flutter 学习指南:从 Dart 基础到实战项目
  • 配置 SSH 密钥与国内镜像加速 Fun-ASR 代码拉取
  • C/C++ 输入输出实战:OJ 场景与性能优化
  • WebSocket 核心原理与前后端实战用法详解
  • Leaflet 结合 SpringBoot 实现地图点击获取当地时间
  • 链表分割:以指定值 x 为基准划分链表
  • 网络安全入门指南:学习路线与方向选择

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online