在 Tauri 应用中,很多时候你只需要存储一些简单的配置,比如用户偏好、窗口位置、主题选择等。如果为此引入 SQLite 或手动管理 JSON 文件,未免有些小题大做。Tauri 的 Store 插件 正是为这种场景设计的:它提供一个轻量级的键值对存储,数据会自动持久化到磁盘,重启应用后依然可用。
如何使用
- 在
src-tauri/Cargo.toml中启用tauri-plugin-store:
[dependencies]
tauri-plugin-store = "2"
- 在
tauri.conf.json中注册插件,并声明需要的权限。例如:
{
"plugins": {
"store": {}
}
}
权限配置中通常需要允许 store:allow-* 系列操作,具体可参考插件文档。
- 前端调用非常简单,就像使用浏览器的
localStorage一样(但数据实际保存在独立文件中,更可靠):
import { Store } from '@tauri-apps/plugin-store';
// 创建一个 Store 实例,参数是文件名(不含扩展名)
const store = new Store('settings.json');
// 写入键值
await store.set('theme', 'dark');
await store.set('sidebarWidth', 240);
// 读取键值(可以指定默认值)
const theme = await store.get('theme'); // 'dark'
const zoom = await store.get('zoom', 1.0); // 1.0(因为不存在)
// 判断键是否存在
const hasKey = await store.has('theme'); // true
// 删除键
await store.delete('sidebarWidth');
// 保存到磁盘(异步,通常自动完成,但可手动触发以确保写入)
await store.save();
数据存放位置
Store 文件默认保存在应用的数据目录下(不同平台有各自的标准路径),例如:
- Windows:
C:\Users\<用户名>\AppData\Roaming\<应用名>\settings.json - macOS:
~/Library/Application Support/<应用名>/settings.json - Linux:
~/.local/share/<应用名>/settings.json
你可以创建多个 Store 文件来组织不同类别的数据,比如 user_prefs.json、cache.json 等。
与 localStorage 的区别
虽然用法类似,但 Store 插件不是 localStorage 的简单替代:
- 持久化更可靠:
localStorage存活于 WebView 的缓存中,可能因清除浏览数据而丢失;Store 插件生成的是磁盘上的物理文件,不会被自动清理。 - 空间不受限:WebView 的 localStorage 通常有 5–10 MB 限制,Store 没有硬性限制。
- 可跨窗口共享:如果应用有多个窗口,它们共享同一个 Store 文件,数据天然同步。
典型场景
- 保存窗口大小、位置,下次启动恢复原样;
- 记录用户最近打开的文件列表;
- 存储应用设置(语言、主题、快捷键映射);
- 轻量级的离线缓存(如仪表盘最后一次获取的数据,避免空窗期)。
对于需要复杂查询或事务支持的数据,建议使用 tauri-plugin-sql;但对于简单的键值配置,Store 插件足够轻快,几乎零学习成本。