跳到主要内容
极客日志极客日志面向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/7/1732 浏览

三个关键配置点

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. 常见问题排查
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 金融从业者必备:Python 在数据分析、量化与风控中的应用
  • OpenClaw 新手入门:环境搭建、模型配置与 WebUI 远程访问
  • AI 大模型:提示工程的核心概念与实战技巧
  • Web3.0 开发实践:核心概念与技术架构
  • 利用 AI 快速开发 MCP 服务插件并实现本地与线上部署
  • 通过 URI Scheme 实现从 Web 页面启动本地 C++ 应用程序及源码示例
  • 非科班无实习入职大厂前端:开发之外的事才是破局关键
  • C++ Vector 容器详解:基本用法与迭代器失效
  • Web3.0 面临的网络安全风险与挑战深度解析
  • Linux 进程信号(上):信号产生方式和闹钟
  • 手撕 STL vector:C++ 动态顺序表核心原理
  • SkyWalking Python 应用分布式追踪实战指南
  • 开源全球情报监控平台 World Monitor 技术架构解析
  • 数据结构:树、二叉树、堆排序与 TOP-K 问题解析
  • AI 大模型开发指南:核心技术与实践路径
  • 前端面试核心题库:场景题、原理与工程化实战
  • C++ 笔试刷题 Day 16:字符串替换、神奇数及 DNA 序列
  • Python 零基础入门教程:基础语法与核心概念详解
  • 基于 AI 陪练的前端新手入门:从零开始构建第一个网页
  • Python 常见错误类型与排查解决指南

相关免费在线工具

  • 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