我正在开发一个使用一些 NPM 的 Chrome 应用程序。当我的应用程序中的依赖项使用 window.localStoarge 时,是否可以将其映射到 chrome.storage.local?
我想用与chrome.storage.local一起使用的东西来覆盖window.localstorage。这样我就不必替换使用本地存储的依赖项中的代码。
有没有一个 npm 或可以做到这一点的东西?
我正在开发一个使用一些 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 实现更容易且更容易出错。