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

时间:2016-03-09 21:11:32

标签: npm local-storage google-chrome-app google-chrome-storage

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

我希望使用与 chrome.storage.local 兼容的内容覆盖 window.localstorage 。这样我就不必替换使用本地存储的依赖项中的代码。

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

1 个答案:

答案 0 :(得分:1)

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

第二个问题是当localStorage只允许字符串时,chrome.storage对对象进行操作。所以如果你有一些依赖于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实现更容易且更容易出错。