JavaScriptのLocalStorageを使用する正しい方法
11917 ワード
Web開発者として、我々はすべての状況に、我々はユーザーのデータ、テーマの好み、または選択されたフィルタのような情報の一部を保持したい、ブラウザのセッション間で一貫した経験をユーザーに与えるためにされている.
さて、それは正確にLocalStorage APIが画像に入っているところです.
ホールドオン、ホールド!基本から始めましょう
ウェブブラウザのLocalStorage APIは、ブラウザセッションを通して格納されたデータを保存して、読むことができます.
それを壊しましょう私たちがブラウザまたはコンピュータさえ再開するとき、データがまだ利用できるように、それは永続的なメモリにデータを保存するのを許します. はそのデータにローカルにデータを格納します.そして、あなたが現在の起源I . EのためにLocalStorageにデータを読む/書くだけであることができるということを意味します
LocalStorageはキー値ストアです.これは、JavaScriptオブジェクトと同じように指定された値に対して指定された値を格納しますが、永続的です.
キー値のストアは、高速ルックアップを提供し、その構造のため、右の要素は常に一定の時間(私は/oを行うには時間から離れてかかる)を見つけるために書き込みます.これは、あなたのLocalStorageの何百ものキーを持つことがルックアップを遅くしないことを意味します.(なぜあなたがそんなことをするのかわかりません)
その速度で、1つの制限、
さて、これはあまり難しくはない.
ありがたいことに、localstorage APIはかなり簡単にインターフェイスを使用します.
次のようにして、LocalStorageのCREATE/READ/UPDATE/DELETEのような基本的な操作を行う方法を見てみましょう.
格納された情報を読むには、
あなたは不思議に思うかもしれません、「文字列!心配するな.
まだオブジェクトのシリアル化されたバージョンを保存することができます.
LocalStorageから格納されたデータをプログラム的に除去する2つの方法があります
あなたは既に削除する項目を知っている場合は、
ストレージからすべてのキーを削除する場合は、
これは、localStorageなどの認証モジュールを使用するサービスと相互作用している場合、localStorageをクリアすると、それらのサービスが入れたデータを削除し、動作を中断します.
はい、心配しないで、私はあなたを得た.
コンピュータサイエンスでは、カプセル化に焦点を当てるべきです.つまり、情報を隠したり、カプセル化したりする必要があります.さて、それは我々がここで我々の小さな問題を解決する方法です.
我々は、定義済みのユニークなキーまたは名前空間の下にすべてのデータを置くことによって、ここでカプセル化の原則を適用することができます.これは私たちがアプリケーションの他の部分(私たちがコントロールしていない)から私たちを隠すことができますまた、誤って我々はすべきではないデータを更新から私たちを保存します.
「いいですね、どうやってやるの?」あなたは不思議かもしれない.
よく、それは音より簡単です、そして、各々の情報のために新しいキーを使用するよりむしろ一つのキーの下で全アプリケーション状態を囲むことによって、働きます.
キー、予測可能なまだユニークな作成します.良い例は[あなたのアプリケーション名]+ [いくつかのユニークなトークン]すなわちDEV - 007です
情報を格納している間、localstorageから名前空間値を読んで、それを逆シリアル化し、オブジェクト内のキーに対して値を更新し、次にLocalStorageに書き込む前に再度シリアル化します.
情報を読み込みながら、LocalStorageから名前空間値を読み取り、それを逆シリアル化し、オブジェクトのキーの値を返します.
以下は上記のコード実装です
上記の問題を解決して、よりスマートなlocalstorageを提供するNPMパッケージstore2が存在するので、あなたがあなた自身の実装を書かなければならないことを心配しないでください.
今日はこれで終わりです.任意の質問や提案をしてください以下のコメントでそれらを削除する自由を感じてください.
そのような内容のために
さて、それは正確にLocalStorage APIが画像に入っているところです.
ホールドオン、ホールド!基本から始めましょう
LocalStorageとは
ウェブブラウザのLocalStorage APIは、ブラウザセッションを通して格納されたデータを保存して、読むことができます.
それを壊しましょう
It is to be noted that the LocalStorage starts empty and the items added during a private session get cleared as soon as the last private tab is closed.
LocalStorageの内部
LocalStorageはキー値ストアです.これは、JavaScriptオブジェクトと同じように指定された値に対して指定された値を格納しますが、永続的です.
キー値のストアは、高速ルックアップを提供し、その構造のため、右の要素は常に一定の時間(私は/oを行うには時間から離れてかかる)を見つけるために書き込みます.これは、あなたのLocalStorageの何百ものキーを持つことがルックアップを遅くしないことを意味します.(なぜあなたがそんなことをするのかわかりません)
その速度で、1つの制限、
key
とvalue
の両方がlocalstorageに格納されるストリングでなければなりません.さて、これはあまり難しくはない.
Currently the Web Storage specification allows you to store up to 5MB per app per browser.
LocalStorageを使う方法?
ありがたいことに、localstorage APIはかなり簡単にインターフェイスを使用します.
次のようにして、LocalStorageのCREATE/READ/UPDATE/DELETEのような基本的な操作を行う方法を見てみましょう.
データの書き込み
localStorage.setItem()
はkey
としてストリングを受け入れます、そして、value
もストリングと認められます. localStorage.setItem('<key>', '<value>')
上記のコード行は、指定されたキーに対して値を書き込みます.既に存在する場合は、既存の値が上書きされます.データの読み込み
格納された情報を読むには、
key
を提供する必要があります const value = localStorage.getItem('<key>')
// value will be null or string
指定されたnull
でデータが見つからなかった場合、key
が返されます.LocalStorage内のオブジェクトの保存
あなたは不思議に思うかもしれません、「文字列!心配するな.
まだオブジェクトのシリアル化されたバージョンを保存することができます.
// storing an object in LocalStorage
const user = { name: 'anshuman_bhardwaj' }
localStorage.setItem('user', JSON.stringify(user))
// reading the object from LocalStorage
const strinifiedUser = localStorage.getItem('user')
if(strinifiedUser) {
const retrivedUser = JSON.parse(strinifiedUser)
}
データの削除
LocalStorageから格納されたデータをプログラム的に除去する2つの方法があります
リモコン
あなたは既に削除する項目を知っている場合は、
removeItem
行く方法です. localStorage.removeItem('<key>')
クリア
ストレージからすべてのキーを削除する場合は、
clear
は明確な選択です.(私がそこで何をしたかわかりますか?) localStorage.clear()
それが聞こえるかもしれないようにエキサイティングなので、それがすべてをクリアするだけではなく、あなたが追加した項目ではないので、clear
メソッドはすべてそんなにそれを使用すべきではない.これは、localStorageなどの認証モジュールを使用するサービスと相互作用している場合、localStorageをクリアすると、それらのサービスが入れたデータを削除し、動作を中断します.
はい、心配しないで、私はあなたを得た.
コンピュータサイエンスでは、カプセル化に焦点を当てるべきです.つまり、情報を隠したり、カプセル化したりする必要があります.さて、それは我々がここで我々の小さな問題を解決する方法です.
The following pattern was suggested to me by my friend & colleague .
LocalStorage内の名前空間の作成と使用
我々は、定義済みのユニークなキーまたは名前空間の下にすべてのデータを置くことによって、ここでカプセル化の原則を適用することができます.これは私たちがアプリケーションの他の部分(私たちがコントロールしていない)から私たちを隠すことができますまた、誤って我々はすべきではないデータを更新から私たちを保存します.
「いいですね、どうやってやるの?」あなたは不思議かもしれない.
よく、それは音より簡単です、そして、各々の情報のために新しいキーを使用するよりむしろ一つのキーの下で全アプリケーション状態を囲むことによって、働きます.
ステップ1
キー、予測可能なまだユニークな作成します.良い例は[あなたのアプリケーション名]+ [いくつかのユニークなトークン]すなわちDEV - 007です
ステップ2
情報を格納している間、localstorageから名前空間値を読んで、それを逆シリアル化し、オブジェクト内のキーに対して値を更新し、次にLocalStorageに書き込む前に再度シリアル化します.
ステップ3
情報を読み込みながら、LocalStorageから名前空間値を読み取り、それを逆シリアル化し、オブジェクトのキーの値を返します.
This way we treat the namespace like it's own little LocalStorage.
以下は上記のコード実装です
const NAMESPACE = "DEV-007";
function writeToStorage(key, value) {
const serializedData = localStorage.getItem(NAMESPACE);
const data = serializedData ? JSON.parse(serializedData) : {};
data[key] = value;
localStorage.setItem(NAMESPACE, JSON.stringify(data));
}
function readFromStorage(key) {
const serializedData = localStorage.getItem(NAMESPACE);
const data = JSON.parse(serializedData);
return data ? data[key] : undefined;
}
function clear() {
localStorage.setItem(NAMESPACE, JSON.stringify({}));
}
function removeItem(key) {
const serializedData = localStorage.getItem(NAMESPACE);
const data = serializedData ? JSON.parse(serializedData) : {};
delete data[key]
localStorage.setItem(NAMESPACE, JSON.stringify(data));
}
clear
とremoveItem
の上記の実装は、我々の問題を使用して、解決するのに安全です.上記の問題を解決して、よりスマートなlocalstorageを提供するNPMパッケージstore2が存在するので、あなたがあなた自身の実装を書かなければならないことを心配しないでください.
今日はこれで終わりです.任意の質問や提案をしてください以下のコメントでそれらを削除する自由を感じてください.
そのような内容のために
Until next time
Reference
この問題について(JavaScriptのLocalStorageを使用する正しい方法), 我々は、より多くの情報をここで見つけました https://dev.to/anshuman_bhardwaj/the-right-way-to-use-localstorage-in-javascript-41a0テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol