谷歌在Chrome 74中试验内置模块KV Storage

谷歌最近宣布,他们计划在Chrome的未来版本中交付两个新的WICG提案。KV Storage(键-值存储)试图提供localStorage的便利,但性能更好。其目的是利用导入映射提案将其作为内置模块的第一个示例交付。

JavaScript生态系统在本地存储和缓存数据方面存在一些缺陷。正如谷歌Web平台软件工程师Philip Walton所解释的那样:

在过去十年的大部分时间里,浏览器厂商和Web性能专家一直在说,localStorage很慢,Web开发人员应该停止使用它。公平地说,说这话的人没错。LocalStorage是一个同步API,它会阻塞主线程,任何时候访问它都有可能阻止页面的交互。问题是,localStorage API非常简单,而且localStorage的唯一异步替代方案是IndexedDB,(面对现实吧)并不以其易用性或受欢迎的API而闻名。

Web Incubator CG (WICG)最近将KV Storage提升为W3C IndexedDB规范的一部分。KV Storage类似于localStorage,但更现代,并在IndexedDB之上。该规范要求浏览器厂商将其作为内置模块实现,并使用IndexedDB作为其后台存储。

以下是规范中提供的KV Storage API使用示例:

import { storage } from "std:kv-storage"; // specifier prefix not final

(async () => {
  await storage.set("mycat", "Tom");
  console.assert(await storage.get("mycat") === "Tom");

  for await (const [key, value] of storage.entries()) {
    console.log(key, value);
  }
  // Logs "mycat", "Tom"

  await storage.delete("mycat");
  console.assert(await storage.get("mycat") === undefined);
})();

对于支持IndexedDB的浏览器,有一个KV Storage polyfill

KV Storage模块是按照JavaScript标准库提案及其导入映射支持中的定义实现的。

导入映射不是一个新概念,它是早期JavaScript模块系统的一部分,就像AMD和其他编程语言中的模块系统。它们是新近才包含在标准ES模块中的。这个导入映射提案提供了对JavaScript import语句和import()表达式所获取的URL的控制,并允许在非导入上下文中重用映射。导入映射允许简化导入语句、回退模块解析、内置模块polyfill以及在fetch、image和link标记之间共享上下文等等。

这两个备受期待的新特性的成功实现,将显著改进将特性添加到JavaScript未来版本的过程,并提供更加方便的Web API。导入映射和内置模块完善了可扩展Web宣言中缺失的部分。

现在,希望试验KV Storage的开发人员可以利用polyfill,或者安装Chrome Dev或Chrome 74的Canary版本。在这些特性的主流版本发布之前,开发者可以注册KV Storage最初试用版,所有Chrome 74+用户都可以使用这些特性。

查看英文原文Google Experiments With Key-Value Storage, Built-In Modules in Chrome 74

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章