Chrome window.localStorage 与 chrome.storage.local 的依赖关系

Chrome window.localStorage vs. chrome.storage.local in dependencies

我正在开发一个使用一些 NPM 的 Chrome 应用程序。当我的应用程序中的依赖项使用 window.localStoarge 时,有没有一种方法可以将其映射到 chrome.storage.local?

我想用适用于 chrome.storage.local 的东西覆盖 window.localstorage。这样我就不必替换使用本地存储的依赖项中的代码。

是否有 npm 或其他东西可以做到这一点?

第一个问题是 chrome.storage API 是异步的,而 localStorage 是同步的。理论上可以创建由 chrome.storage 支持的 localStorage 模拟,但在许多情况下它会中断。

第二个问题是 chrome.storage 对对象进行操作,而 localStorage 只允许字符串。所以如果你有某种依赖于 localStorage 模式的代码,你将只能在 chrome.storage.local 中存储字符串,否则你会遇到非常奇怪的错误。

最后一个问题是你不能在chrome应用程序中重新分配window.localStorage变量,所以唯一的方法是将代码包装到自执行闭包中,并提供window和localStorage 模拟为闭包变量,例如:

(function(window,localStorage){
    //some code relying on localStorage here
})(windowObjectMock,windowObjectMock.localStorage);

重写外部代码以使用 chrome.storage.local 比尝试提供由 chrome.storage.local.

支持的 localStorage 实现更容易也更容易出错