Tauri + Vite + SvelteKit + TailwindCSS + DaisyUI 跨平臺開發詳細配置指南(Windows)

Tauri + Vite + SvelteKit + TailwindCSS + DaisyUI 跨平臺開發詳細配置指南(Windows)

本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議。轉載請注明出處及本聲明
原文鏈接:[你的文章鏈接]


🛠? 環境準備

1. 安裝核心工具

# 安裝 Rust(Tauri 依賴)
winget install Rustlang.Rustup# 安裝 Node.js(>=18.x)
winget install OpenJS.NodeJS.LTS# 安裝 WebView2(若系統未預裝)
# 下載地址:https://developer.microsoft.com/en-us/microsoft-edge/webview2/# 安裝 Tauri CLI
npm install -g @tauri-apps/cli

🚀 項目初始化

1. 創建項目

npm create tauri-app# 按提示選擇:
? Project name · my-app
? Choose frontend template · SvelteKit
? Choose TypeScript/JavaScript · TypeScript
? Install dependencies · npm

2. 目錄結構說明

my-app/
├── src/                # SvelteKit 前端代碼
│   ├── app.html        # 主入口 HTML
│   ├── routes/         # 頁面路由
│   └── styles/         # 全局樣式
├── src-tauri/          # Tauri 配置
│   ├── Cargo.toml      # Rust 依賴
│   └── tauri.conf.json # 應用配置
├── postcss.config.cjs  # PostCSS 配置
└── tailwind.config.cjs # Tailwind 配置

🔧 集成 Tailwind CSS + DaisyUI

1. 安裝依賴

npm install -D tailwindcss postcss autoprefixer @tailwindcss/vite daisyui
npx svelte-add@latest tailwindcss  # 自動生成配置文件

2. 配置 Tailwind

// tailwind.config.cjs
module.exports = {content: ['./src/**/*.{svelte,js,ts}'],plugins: [require('daisyui')],daisyui: {themes: ['light', 'dark'],  // 啟用默認主題styled: true,base: true}
}

3. 引入全局樣式

<!-- src/app.html -->
<!DOCTYPE html>
<html lang="en" data-theme="light"><head><!-- 引入 Tailwind 基礎樣式 --><link rel="stylesheet" href="/node_modules/tailwindcss/tailwind.css" /></head>
</html>

?? Tauri 關鍵配置

1. 調整 tauri.conf.json

{"build": {"distDir": "../build","devPath": "http://localhost:5173","beforeDevCommand": "npm run dev","beforeBuildCommand": "npm run build"},"tauri": {"allowlist": {"shell": { "open": true }},"bundle": {"targets": ["msi", "nsis"]  // Windows 安裝包格式}}
}

2. Rust 依賴管理

# src-tauri/Cargo.toml
[dependencies]
tauri = { version = "2.0.0", features = ["shell-open"] }

🎨 DaisyUI 主題定制

1. 主題切換組件

<!-- src/lib/ThemeToggle.svelte -->
<script lang="ts">let theme: 'light' | 'dark' = 'light';const toggleTheme = () => theme = theme === 'light' ? 'dark' : 'light';
</script><button on:click={toggleTheme} class="btn btn-primary">{theme === 'light' ? '🌙' : '??'}
</button><style>:global(html) {@apply transition-colors duration-300;}
</style>

2. 應用主題變量

/* src/styles/global.css */
@layer base {:root {--rounded-box: 0.5rem; /* 自定義圓角 */--animation-btn: 0.3s; /* 按鈕動畫速度 */}
}

🚦 開發與調試技巧

1. 啟動開發環境

# 前端開發服務器
npm run dev# Tauri 窗口(新終端運行)
npm run tauri dev -- --no-watch  # 禁用自動重建

2. 常見問題解決

  • 樣式未加載:檢查 app.html 中 CSS 引入路徑 (https://blog.csdn.net/qq_40358970/article/details/138497882)
  • DaisyUI 主題失效:確認 data-theme 屬性已設置 (https://wenku.csdn.net/answer/25o68c2sj4)
  • Tauri 窗口白屏:檢查 devPath 是否指向 Vite 端口 (https://vitejs.cn/vite3-cn/guide/)

📦 生產構建與打包

1. 生成安裝包

npm run build          # 構建前端
npm run tauri build    # 生成 Windows 安裝包

2. 優化建議

  • 啟用 代碼壓縮:在 vite.config.ts 中配置 build.minify: true (https://blog.csdn.net/sinat_36728518/article/details/135510066)
  • 添加 應用圖標:替換 src-tauri/icons 目錄下的 .ico 文件 (https://m.blog.csdn.net/deng_zhihao692817/article/details/144399021)
  • 配置 自動更新:集成 tauri-plugin-updater (https://m.sohu.com/a/831137213_121124378/?pvid=000115_3w_a)

💡 最佳實踐總結

  • 性能優化:使用 @sveltejs/adapter-static 預渲染頁面 (https://blog.csdn.net/sinat_36728518/article/details/135510066)
  • 安全加固:在 tauri.conf.json 中限制危險 API 調用 (https://zhuanlan.zhihu.com/p/651166037)
  • 跨平臺適配:通過 CSS 媒體查詢實現響應式布局 (https://blog.csdn.net/visitorcsdn/article/details/143828856)

版權聲明
本文部分內容參考自以下資料:

  1. Vite 官方中文文檔
  2. Tauri 跨平臺開發指南
  3. npm vs pnpm 對比分析

*注:文中代碼示例及技術參數均基于 2025 年最新版本工具鏈驗證,實際開發請以官方文檔為準。*

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/73610.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/73610.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/73610.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在 macOS 上優化 Vim 用于開發

簡介 這篇指南將帶你通過一系列步驟&#xff0c;如何在 macOS 上優化 Vim&#xff0c;使其具備 代碼補全、語法高亮、代碼格式化、代碼片段管理、目錄樹等功能。此外&#xff0c;我們還會解決在安裝過程中可能遇到的常見錯誤。 1. 安裝必備工具 在開始 Vim 配置之前&#xff…

golang開發支持onlyoffice的token功能

一直都沒去弄token這塊&#xff0c;想著反正docker run的時候將jwt置為false即可。 看了好多文章&#xff0c;感覺可以試試&#xff0c;但是所有文件幾乎都沒說思路。 根據我的理解和成功的調試&#xff0c;思路是&#xff1a; 我們先定義2個概念&#xff0c;一個是文檔下載…

Android wifi的開關Settings值異常分析

Android wifi的開關Settings值異常分析 文章目錄 Android wifi的開關Settings值異常分析一、前言二、異常分析1、adb或者串口獲取Settings的wifi開關值2、代碼獲取wifi開關值3、根據日志分析代碼(1)logcat 對應的wifi開啟日志的代碼①WifiServiceImpl.java② WifiSettingsStore…

C#的委托Action

在 C# 中&#xff0c;Action 是一個預定義的委托類型&#xff0c;它位于 System 命名空間下。下面詳細介紹它的作用和使用方法。 作用 Action 委托的主要作用是封裝一個方法&#xff0c;這個方法沒有返回值&#xff08;即返回類型為 void&#xff09;。它提供了一種簡潔的方式…

Qt MainWindow簡單例子(文本編輯)

使用Qt控件練習文本編輯窗口的創建。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QLabel> #include <QProgressBar>QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public Q…

DeepSeek-prompt指令-當DeepSeek答非所問,應該如何準確的表達我們的訴求?

當DeepSeek答非所問&#xff0c;應該如何準確的表達我們的訴求&#xff1f;不同使用場景如何向DeepSeek發問&#xff1f;是否有指令公式&#xff1f; 目錄 1、 扮演專家型指令2、 知識蒸餾型指令3、 顆粒度調節型指令4、 時間軸推演型指令5、 極端測試型6、 逆向思維型指令7、…

Mac中nvm切換node版本失敗,關閉終端再次打開還是之前的node

Mac中使用 nvm 管理 node 版本&#xff0c;在使用指令&#xff1a;nvm use XXX 切換版本之后。 關閉終端&#xff0c;再次打開&#xff0c;輸入 node -v 還是得到之前的 node 版本。 原因&#xff1a; 在這里這個 default 中有個 node 的版本號&#xff0c;使用 nvm use 時&a…

織夢dedecmsV5.7提示信息提示框美化(帶安裝教程和效果展示)

一、效果展示 1、安裝前效果 2、安裝后效果 二、安裝說明 1、安裝測試版本&#xff1a;DedeCMS-V5.7.117-UTF8&#xff1b; 2、必須在修改代碼之前請做好文件備份&#xff0c;以免誤操無法恢復&#xff1b; 3、為了兼容其他版本&#xff0c;請在安裝時&#xff0c;最好將替…

Science Advances 視觸覺傳感機制的交互裝置,可以實時測量來自手不同部位的分布力

近日&#xff0c;由香港科技大學&#xff08;HKUST&#xff09;電子與計算機工程學系申亞京教授領導的研究團隊&#xff0c;提出了一種基于數字通道的觸覺交互系統&#xff0c;可以實時測量來自手不同部位的分布力&#xff0c;有望在醫學評估、體育訓練、機器人和虛擬現實&…

MySQL單表查詢大全【SELECT】

山再高&#xff0c;往上攀&#xff0c;總能登頂&#xff1b;路再長&#xff0c;走下去&#xff0c;定能到達。 Mysql中Select 的用法 ------前言------【SELECT】0.【準備工作】0.1 創建一個庫0.2 庫中創建表0.3 表中加入一些數據 1.【查詢全部】2.【查詢指定列】2.1查詢指定列…

Vue調用子組件init方法時報錯Cannot read properties of undefined (reading ‘init‘)解決方法

調用init方法語句寫在this.$nextTick(() > {});方法里&#xff0c;因為nextTick方法在頁面元素加載完之后調用 this.$nextTick(() > {this.$refs.chartComponent.init();});如果還報錯&#xff1a;Error in nextTick: "TypeError: Cannot read properties of undef…

怎么解決在Mac上每次打開文件夾都會彈出一個新窗口的問題

在Mac上每次打開文件夾都會彈出一個新窗口的問題&#xff0c;可以通過以下方法解決? ?調整Finder設置?&#xff1a; 打開Finder&#xff0c;點擊“Finder”菜單&#xff0c;選擇“偏好設置”。在偏好設置中&#xff0c;選擇“通用”標簽。取消勾選“在標簽頁中打開文件夾”或…

從 Prop Drilling 到 Context:React 狀態管理的演進與抉擇

Context的出現解決了什么問題&#xff1f; Vue中的provide/inject和React中的Context非常相似&#xff0c;具體區別如下&#xff1a; 可以看到實際上最大的區別在于Vue是響應式&#xff0c;React是非響應式 那么context具體解決了什么問題&#xff1f;我們先看下面這個例子&a…

考研408-數據結構完整代碼 線性表的順序存儲結構 - 順序表

線性表的順序存儲結構 - 順序表 1. 順序表的定義 ? 用一組地址連續的存儲單元依次存儲線性表的數據元素&#xff0c;從而使邏輯上相鄰的兩個元素在物理位置上也相鄰 2. 順序表的特點 隨機訪問&#xff1a; 即通過首地址和元素序號可以在O(1) 時間內找到指定元素&#xff0…

【經驗分享】SpringBoot集成WebSocket開發02 之 實現一個基本示例并Spring Bean注入的方式來組織代碼

結合Spring Boot和WebSocket實現一個基本示例&#xff0c;并且使用Spring Bean注入的方式來組織代碼。 1. 創建Spring Boot項目 首先&#xff0c;確保你有一個Spring Boot項目&#xff0c;并在pom.xml文件中引入了WebSocket相關的依賴。 <dependencies><!-- Spring…

DeepSeek-R1大模型微調技術深度解析:架構、方法與應用全解析

1. DeepSeek-R1大模型架構設計與技術特性 1.1 架構設計 DeepSeek-R1作為超大規模語言模型,其核心架構設計包含以下創新: 專家混合架構(MoE) 采用6710億參數的混合專家架構(MoE),每個推理過程僅激活370億參數,實現計算效率與資源利用率的突破性提升。 Transformer框架…

本地部署Hive集群

規劃 服務機器Hive本體部署在Node1元數據服務所需的關系型數據庫(MYSQL)部署在Node1 安裝MYSQL數據庫 # 更新密鑰 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 安裝Mysql yum庫 rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.…

緩存之美:Guava Cache 相比于 Caffeine 差在哪里?

大家好&#xff0c;我是 方圓。本文將結合 Guava Cache 的源碼來分析它的實現原理&#xff0c;并闡述它相比于 Caffeine Cache 在性能上的劣勢。為了讓大家對 Guava Cache 理解起來更容易&#xff0c;我們還是在開篇介紹它的原理&#xff1a; Guava Cache 通過分段&#xff08;…

2025年【廣東省安全員C證第四批(專職安全生產管理人員)】考試及廣東省安全員C證第四批(專職安全生產管理人員)模擬試題

安全生產是各行各業不可忽視的重要環節&#xff0c;特別是在廣東省這樣的經濟大省&#xff0c;安全生產的重要性更是不言而喻。為了確保安全生產管理人員具備足夠的專業知識和實際操作能力&#xff0c;廣東省定期舉辦安全員C證考試。本文將詳細介紹2025年廣東省安全員C證第四批…

傳輸層自學

傳輸實體&#xff1a;完成傳輸層任務的硬件或軟件 可能位于&#xff1a; 操作系統內核獨立的用戶進程綁定在網絡應用中的鏈接庫網絡接口卡 1.功能&#xff1a; 網絡層與傳輸層作用范圍比較&#xff1f; 網絡層負責把數據從源機送達到目的機 傳輸層負責把數據送達到具體的應…