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

2019 年 4 月 28 日 前端之巅

作者 | Dylan Schiemann
译者 | 平川

谷歌最近宣布,他们计划在 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:

https://github.com/GoogleChromeLabs/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+ 用户都可以使用这些特性。

查看英文原文:

https://www.infoq.com/news/2019/04/google-kv-storage-import-maps

登录查看更多
0

相关内容

【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
Python 3.8.0来了!
数据派THU
5+阅读 · 2019年10月22日
通过Docker安装谷歌足球游戏环境
CreateAMind
11+阅读 · 2019年7月7日
GitHub 热门:别再用 print 输出来调试代码了
Python开发者
27+阅读 · 2019年4月24日
ZigBee 网络安全攻防
计算机与网络安全
13+阅读 · 2019年4月15日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
Python3.7中一种懒加载的方式
Python程序员
3+阅读 · 2018年4月27日
TensorFlow还是Keras?深度学习框架选型指南
论智
5+阅读 · 2018年3月24日
Arxiv
3+阅读 · 2019年9月5日
Star-Transformer
Arxiv
5+阅读 · 2019年2月28日
Arxiv
5+阅读 · 2018年6月4日
Arxiv
10+阅读 · 2018年2月4日
VIP会员
相关资讯
Python 3.8.0来了!
数据派THU
5+阅读 · 2019年10月22日
通过Docker安装谷歌足球游戏环境
CreateAMind
11+阅读 · 2019年7月7日
GitHub 热门:别再用 print 输出来调试代码了
Python开发者
27+阅读 · 2019年4月24日
ZigBee 网络安全攻防
计算机与网络安全
13+阅读 · 2019年4月15日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
Python3.7中一种懒加载的方式
Python程序员
3+阅读 · 2018年4月27日
TensorFlow还是Keras?深度学习框架选型指南
论智
5+阅读 · 2018年3月24日
相关论文
Top
微信扫码咨询专知VIP会员