手把手教学:用Tauri给你的博客/官网做个专属桌面客户端(支持Windows/macOS)
2026/5/16 19:22:59 网站建设 项目流程

手把手教学:用Tauri给你的博客/官网做个专属桌面客户端(支持Windows/macOS)

当你花费大量精力打造了一个精美的个人博客或作品集网站后,是否想过让访问者获得更沉浸的体验?传统的浏览器标签页总让人感觉"临时"且缺乏专属感。本文将带你用Tauri框架,将现有网站转化为真正原生风格的桌面应用,支持生成Windows的.exe和macOS的.dmg安装包。

与常见的"浏览器套壳"方案不同,我们会深度定制:

  • 应用图标与品牌视觉统一
  • 原生风格的窗口控件和菜单栏
  • 完全隐藏地址栏等浏览器元素
  • 自定义窗口尺寸和启动行为

1. 环境准备与项目初始化

1.1 安装必要工具链

确保系统中已安装:

  • Rust(Tauri的基础语言环境)
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Node.js(18.x或更高版本)
  • 系统依赖
    • Windows:需安装WebView2(通常已预装)
    • macOS:需Xcode命令行工具
      xcode-select --install

1.2 创建Tauri项目

推荐使用官方脚手架:

npm create tauri-app@latest

在交互式向导中选择:

  • 项目模板vanilla(最简配置)
  • UI框架none(直接加载外部URL)
  • 包管理器:根据习惯选择yarn或npm

提示:项目名称请使用逆序域名格式(如com.yourname.blog),这是桌面应用的通用命名规范。

2. 核心配置:从网页到原生应用

2.1 修改tauri.conf.json

找到src-tauri/tauri.conf.json,关键配置如下:

{ "build": { "devPath": "https://your-blog-url.com", "distDir": "" }, "tauri": { "windows": [{ "title": "Your Blog Name", "width": 1200, "height": 800, "fullscreen": false, "resizable": true, "decorations": false // 隐藏默认标题栏 }] } }

高级定制参数

配置项作用说明推荐值
alwaysOnTop窗口是否置顶按需启用
skipTaskbar是否在任务栏显示适用于后台应用
transparent窗口透明需要前端配合

2.2 注入自定义样式

在项目根目录创建src-tauri/tauri.css

/* 隐藏滚动条但保留滚动功能 */ html { scrollbar-width: none; -ms-overflow-style: none; } html::-webkit-scrollbar { display: none; } /* 禁用文本选择增强原生感 */ body { user-select: none; }

3. 深度优化:让应用更"原生"

3.1 自定义标题栏(macOS风格)

修改src-tauri/main.rs添加:

use tauri::Manager; fn main() { tauri::Builder::default() .setup(|app| { let window = app.get_window("main").unwrap(); // 启用透明和阴影效果 window.set_decorations(false)?; window.set_shadow(true)?; Ok(()) }) .run(tauri::generate_context!()) .expect("error while running tauri application"); }

3.2 应用图标制作规范

推荐使用1024x1024PNG源图,通过工具生成多尺寸图标:

npm install -g tauri-icon tauri icon ./icon-source.png

生成的图标会自动适配:

  • Windows的.ico
  • macOS的.icns
  • Linux的.png集合

4. 构建与分发

4.1 多平台打包命令

# 开发模式实时预览 npm run tauri dev # 生产环境构建 npm run tauri build

构建产物路径:

  • Windows:src-tauri/target/release/bundle/msi/
  • macOS:src-tauri/target/release/bundle/dmg/

4.2 安装包签名(可选但重要)

macOS代码签名示例

tauri signer sign \ --identity "Apple Developer: Your Name (TEAMID)" \ --icon ./icons/icon.icns \ --bundle-id com.yourdomain.app

Windows签名建议

  • 购买正规代码签名证书
  • 使用SignTool工具进行签名
  • 考虑加入时间戳服务

5. 进阶技巧:提升用户体验

5.1 离线缓存策略

通过Tauri的fsAPI实现本地存储:

// 在前端代码中调用Tauri接口 import { fs } from '@tauri-apps/api'; async function cacheAssets() { await fs.createDir('cache', { recursive: true }); // 保存常用资源到本地 }

5.2 自定义协议唤醒

tauri.conf.json中添加:

"tauri": { "allowlist": { "protocol": { "asset": true, "yourcustomprotocol": true } } }

实现类似your-app://的深度链接功能。

6. 常见问题解决方案

窗口白屏问题

  1. 检查devPath是否使用HTTPS
  2. 确保CORS策略允许本地访问
  3. tauri.conf.json中增加:
    "security": { "csp": "default-src 'self' https://your-blog-url.com" }

打包体积优化

  • 删除target/release/build中的中间文件
  • 使用UPX压缩可执行文件
    upx --best target/release/your_app.exe

实际项目中,我发现最影响用户体验的往往是启动速度。通过预加载关键资源和优化Rust编译参数(如设置codegen-units = 1),可以将冷启动时间控制在1秒内。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询