本地存储

Storage API 提供了一个简单高效的接口,用于存储和检索持久化数据,支持基础数据类型和 JSON。


概述

Storage API 被设计用于异步将简单数据类型持久化到磁盘。适合存储设置、用户偏好或需要在应用启动间保留的轻量级数据。

主要特性:

  • 简单的接口,可用于存储、检索和移除数据。
  • 支持基础数据类型和 JSON。
  • 数据在应用多次启动之间持久化。

支持的数据类型

Storage 支持以下数据类型:

  • string
  • number
  • boolean
  • JSON 对象(Record<string, any> 或数组)

API 参考

方法

Storage.set<T>(key: string, value: T): boolean

在后台将 value 保存到持久化存储中。

  • 参数:
    • key: 数据的唯一标识符。
    • value: 要存储的数据,必须是支持的数据类型之一。
  • 返回值:
    • 一个布尔值,指示操作是否成功。

示例:

1const success = Storage.set("username", "JohnDoe")
2console.log("保存成功:", success)

Storage.get<T>(key: string): T | null

从持久化存储中读取一个值。如果 key 不存在,返回 null

  • 参数:
    • key: 要检索的数据的唯一标识符。
  • 返回值:
    • 已存储的值,或 null 如果 key 不存在。

示例:

1const username = Storage.get<string>("username")
2console.log("存储的用户名:", username)

Storage.remove(key: string): void

从持久化存储中移除一个条目。

  • 参数:
    • key: 要移除的数据的唯一标识符。

示例:

1Storage.remove("username")
2console.log("用户名已从存储中移除")

Storage.contains(key: string): boolean

检查持久化存储中是否包含给定的 key

  • 参数:
    • key: 数据的唯一标识符。
  • 返回值:
    • 如果 key 存在,返回 true;否则返回 false

示例:

1const hasKey = Storage.contains("username")
2console.log("存储中是否存在用户名:", hasKey)

常见用例

保存并检索用户设置

1Storage.set("theme", "dark")
2const theme = Storage.get<string>("theme")
3console.log("当前主题:", theme)

检查并移除一个键

1if (Storage.contains("theme")) {
2  Storage.remove("theme")
3  console.log("主题偏好已移除")
4}

存储 JSON 数据

1const userData = { name: "John Doe", age: 30 }
2Storage.set("user", userData)
3
4const storedUser = Storage.get<Record<string, any>>("user")
5console.log("用户数据:", storedUser)

最佳实践

  1. 键管理: 使用一致且描述性的键以避免冲突,并使代码更易维护。
  2. 数据验证: 在检索存储的 JSON 对象时,始终验证其数据类型和结构。
  3. 错误处理: 检查 Storage.set 的返回值以确保操作成功。
  4. 优化访问: 最小化频繁的读写操作以避免不必要的开销。

完整示例

1async function main() {
2  // 保存用户偏好
3  const saveSuccess = Storage.set("language", "English")
4  if (saveSuccess) {
5    console.log("语言偏好保存成功")
6  }
7
8  // 检索用户偏好
9  const language = Storage.get<string>("language")
10  console.log("首选语言:", language)
11
12  // 保存 JSON 数据
13  const profile = { name: "Jane Doe", age: 28 }
14  Storage.set("profile", profile)
15
16  // 检索 JSON 数据
17  const storedProfile = Storage.get<Record<string, any>>("profile")
18  console.log("存储的个人信息:", storedProfile)
19
20  // 移除一个键
21  if (Storage.contains("language")) {
22    Storage.remove("language")
23    console.log("语言偏好已移除")
24  }
25}
26
27main()