0

いくつかの NPM を使用する Chrome アプリを開発しています。アプリの依存関係で window.localStoarge が使用されている場合、それを chrome.storage.local にマップする方法はありますか?

代わりにchrome.storage.localで動作するものでwindow.localstorageをオーバーライドしたいと思います。この方法では、ローカル ストレージを使用している依存関係のコードを置き換える必要はありません。

これを行うことができるnpmまたは何かがありますか?

4

1 に答える 1

1

最初の問題は、chrome.storage API が非同期で、localStorage が同期であることです。理論的には、chrome.storage に基づく localStorage モックを作成することは可能ですが、多くの場合は壊れます。

2 番目の問題は、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 に基づく localStorage 実装を提供しようとするよりも、chrome.storage.local を使用するように外部コードを書き直す方が簡単で、エラーが発生しやすくなります。

于 2016-03-18T17:20:25.463 に答える