当前位置: 首页 > news >正文

SvelteKit + Tauri 2 前端配置要点(Static Adapter + SPA 模式最稳)

1、Checklist(理解为什么这样配)

  • 使用adapter-staticSSG/SPA,Tauri 不支持依赖服务端的方案。(Tauri)
  • 如果你开启 prerender(SSG),要注意:构建阶段的load在构建环境执行,拿不到 Tauri API;官方更推荐 SPA(不 prerender)。(Tauri)
  • frontendDistbuild/(SvelteKit static adapter 的默认构建目录)。(Tauri)

2、一步步配置(照抄即可跑)

Step A:安装 static adapter

npminstall--save-dev @sveltejs/adapter-static

(Tauri)

Step B:配置 Tauri(src-tauri/tauri.conf.json)

{"build":{"beforeDevCommand":"npm run dev","beforeBuildCommand":"npm run build","devUrl":"http://localhost:5173","frontendDist":"../build"}}

这里的含义是:tauri dev先跑 SvelteKit dev server,再让窗口加载5173tauri buildnpm run build生成build/,再把它打包进应用。(Tauri)

Step C:配置 SvelteKit(svelte.config.js)

importadapterfrom'@sveltejs/adapter-static';import{vitePreprocess}from'@sveltejs/vite-plugin-svelte';/** @type {import('@sveltejs/kit').Config} */constconfig={preprocess:vitePreprocess(),kit:{adapter:adapter({fallback:'index.html',}),},};exportdefaultconfig;

fallback: 'index.html'是把 SvelteKit 变成“真正 SPA 模式”的关键:当某个 URL 没有对应的预渲染页面时,会回退到index.html,让前端路由接管。(svelte.dev)

Step D:禁用 SSR(src/routes/+layout.ts)

exportconstssr=false;

这样你就能更放心地使用依赖window的 API(包括 Tauri API),减少到处写if (typeof window !== 'undefined')的痛苦。(Tauri)

3、运行与打包

开发:

cargo tauri dev

打包:

cargo tauri build

Tauri 会按tauri.conf.jsonbefore*Command / devUrl / frontendDist自动串起来。(Tauri)

4、关于 prerender(SSG)与 Tauri API:怎么不踩坑

官方提醒的核心点是:如果你启用了 prerender,构建时会执行一些页面加载逻辑;在构建环境里没有 Tauri WebView,自然也就没有 Tauri API。因此更推荐 SPA(不 prerender)。(Tauri)

如果你确实要 “部分 prerender”:

  • 把需要 Tauri API 的逻辑挪到onMount(只在 WebView/浏览器执行)
  • 或者在load中用$app/environmentbrowser做分支(构建期为 false),避免触发 Tauri 调用
  • 对某些路由单独设置export const prerender = false,让它走纯客户端(具体用法以 SvelteKit page options 为准)(svelte.dev)

一个典型安全写法示例(把 Tauri 调用放到 onMount):

<script lang="ts"> import { onMount } from 'svelte'; onMount(async () => { // 这里再调用 Tauri API(只在 WebView 环境执行) // const { invoke } = await import('@tauri-apps/api/core'); // const res = await invoke('your_command'); }); </script>

5、最常见问题速查

  • 打包后白屏:90% 是frontendDist指错、或没生成build/。先确认npm run build后确实有build/index.html,再检查frontendDist: "../build"。(Tauri)
  • 刷新路由 404:多半是忘了fallback: 'index.html',SPA 模式没生效。(svelte.dev)
  • window is not defined:通常是 SSR 或 prerender 期间执行了依赖 window 的代码;按上面方式禁 SSR、并把 Tauri 调用延后到 onMount/浏览器分支。(svelte.dev)
http://www.jsqmd.com/news/414065/

相关文章:

  • SpaceX星舰测试内幕:用数字孪生模拟火星沙暴
  • 机械制造ASP.NET WebForm如何通过插件机制扩展视频文件夹的秒传算法?
  • Jupyter退位?2026年脑机交互开发环境新王诞生:软件测试从业者的范式革命
  • 【收藏必备】智能体式RAG完全指南:提升大模型应用能力的核心技术
  • Flink Events 用“事件流”把关键状态变化统一投递到外部系统
  • 银行系统C#如何设计文件夹分片上传的跨服务器节点负载均衡方案?
  • 汉字最恐怖的地方:5 个元素,驾驭整个世界
  • 【必收藏】LangChain生态全景图:从入门到生产级应用开发指南
  • 为什么一定要做Agent?| 从定义到优势,全面解析AI智能体的价值与未来,值得收藏!
  • 【信息科学与工程学】【研发体系】第十篇 半导体电路设计 127光电共封装CPO 第六部分
  • 2026 少儿编程机构实力排行 TOP7 各机构特色与优势全解析 - 速递信息
  • 2026年商场棉门帘公司权威推荐:商场磁吸门帘/店铺棉门帘/店铺磁吸门帘/磁吸门帘板材/西安磁吸门帘/选择指南 - 优质品牌商家
  • 大模型记忆工程完全指南:从架构设计到产业落地
  • *力扣题解:消失的数字(四个方案解析)
  • 互联网大厂Java面试实录:程序员谢飞机的坎坷求职之路
  • 2026年少儿编程机构权威排行:TOP3 品牌特色与择校攻略 - 速递信息
  • 深耕乡村普惠保障,众惠相互助力慈溪农村互助保险提质增效 - 速递信息
  • 互联网大厂Java求职面试实战:游戏与虚拟互动场景下的Spring Boot、微服务、消息队列与AI技术解析
  • 2026年餐饮店棉门帘公司权威推荐:商场磁吸门帘、商店磁吸门帘、店铺棉门帘、店铺磁吸门帘、磁吸门帘板材选择指南 - 优质品牌商家
  • 吐血推荐!9个AI论文工具深度测评,本科生毕业论文写作必备神器
  • 一文讲透|降AIGC软件 千笔AI VS 万方智搜AI,本科生专属高效降重神器!
  • 天鸿游乐过山车好用吗,价格多少,适合在游乐场地投放吗? - mypinpai
  • 2026年贵阳新华职校排名揭晓,讲讲贵阳市新华电脑中等职业学校的优势 - myqiye
  • 2026年评价高的突发环境事件应急演练公司公司推荐:公共卫生事件应急演练、公共卫生事件演练策划公司选择指南 - 优质品牌商家
  • 2026年保温装饰一体化板市场,这些品牌表现亮眼,真空绝热板保温装饰一体板,保温装饰一体化板定做厂家怎么选择 - 品牌推荐师
  • 球销高低温泥水测试机厂家突围:多维协同测试优化法解决效率与数据痛点 - 速递信息
  • 数据库巡检
  • python反编译
  • 2026年防洪防汛应急演练公司厂家推荐:桌面应急预案演练、社会安全事件应急演练、交通事故应急演练公司选择指南 - 优质品牌商家
  • Chakra UI组件深度解析