本页内容

Web 存储 API

Deno 1.10 引入了 Web 存储 API,它提供了一个用于存储字符串键值对的 API。持久化数据的工作原理类似于浏览器,并且有 10MB 的存储限制。全局 sessionStorage 对象仅在当前执行上下文中持久化数据,而 localStorage 会从执行到执行持久化数据。

在浏览器中,localStorage 会根据来源(实际上是协议加上主机名加上端口)唯一地持久化数据。从 Deno 1.16 开始,Deno 有一套规则来确定什么是唯一的存储位置。

  • 使用 --location 标志时,该位置的来源将用于唯一地存储数据。这意味着 http://example.com/a.tshttp://example.com/b.ts 以及 http://example.com:80/ 将共享相同的存储,但 https://example.com/ 将不同。
  • 如果没有位置说明符,但指定了 --config 配置文件,则使用该配置文件的绝对路径。这意味着 deno run --config deno.jsonc a.tsdeno run --config deno.jsonc b.ts 将共享相同的存储,但 deno run --config tsconfig.json a.ts 将不同。
  • 如果没有配置或位置说明符,Deno 将使用主模块的绝对路径来确定共享哪些存储。Deno REPL 会生成一个基于 deno 启动的当前工作目录的“合成”主模块。这意味着从同一路径多次调用 REPL 将共享持久化的 localStorage 数据。

这意味着,与 1.16 之前的版本不同,localStorage 始终在主进程中可用。

示例 跳转到标题

以下代码段访问当前来源的本地存储桶,并使用 setItem() 向其添加数据项。

localStorage.setItem("myDemo", "Deno App");

读取 localStorage 项的语法如下

const cat = localStorage.getItem("myDemo");

删除 localStorage 项的语法如下

localStorage.removeItem("myDemo");

删除所有 localStorage 项的语法如下

localStorage.clear();