谷歌在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

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