序章
WebストレージAPIの一部であるlocalStorage
およびsessionStorage
オブジェクトは、キーと値のペアをローカルに保存するための2つの優れたツールです。 ストレージにlocalStorage
およびsessionStorage
を使用することは、Cookieを使用する代わりに使用でき、いくつかの利点があります。
- データはローカルにのみ保存され、サーバーで読み取ることはできません。これにより、Cookieがもたらすセキュリティの問題が解消されます。
- これにより、はるかに多くのデータを保存できます(ほとんどのブラウザーで10MB)。
- 構文は単純です。
最新のすべてのブラウザでもサポートされているため、今日でも問題なく使用できます。 特に認証に関しては、Cookieは依然として有用ですが、localStorage
またはsessionStorage
を使用する方が良い場合もあります。
前提条件
このチュートリアルを完了するには、次のものが必要です。
- マシンにインストールされているNodeの最新バージョン。 Nodeをインストールするには、このNode.jsチュートリアルのインストール方法に概説されている手順に従ってください。
- このJavaScriptでコーディングする方法シリーズで見つけることができるJavaScriptでのコーディングの基本的な理解。
ステップ1—localStorage
とsessionStorage
を理解する
localStorage
とsessionStorage
はほぼ同じで、APIも同じです。 違いは、sessionStorage
では、ウィンドウまたはタブが閉じられるまでデータが保持されることです。 localStorage
を使用すると、ユーザーがブラウザのキャッシュを手動でクリアするか、ウェブアプリがデータをクリアするまで、データが保持されます。 このチュートリアルはlocalStorage
を特徴としていますが、sessionStorage
の構文は同じです。
この知識があれば、localStorage
でキーと値のペアを作成、読み取り、更新できるようになります。
ステップ2—エントリの作成、読み取り、更新
setItem()
メソッドを使用して、localStorage
オブジェクトのエントリを作成できます。 setItem()
メソッドは、key
と対応する値の2つの引数を取ります。
let key = 'Item 1'; localStorage.setItem(key, 'Value');
エントリを読み取るには、getItem()
メソッドを使用します。 getItem()
メソッドは、キーでなければならない1つの引数を取ります。 この関数は、対応する値を文字列として返します。
let myItem = localStorage.getItem(key);
このコードは、myItem
を'Value'
に等しく設定します。これは、key
に対応する値です。
エントリの更新は、setItem()
メソッドを使用して行われます。 ここでも、2つの引数が必要です。 key引数は既存のキーになり、value引数は新しい値になります。
localStorage.setItem(key, 'New Value');
これで、key
のlocalStorage
値は、'Value'
ではなく'New Value'
になります。
localStorage
オブジェクトのエントリを作成、読み取り、更新できます。 localStorage
の個々のエントリを削除して、すべてのエントリをクリアすることもできます。
ステップ3—エントリの削除とクリア
removeItem()
メソッドを使用してエントリを削除できます。 removeItem()
メソッドは、localStorage
オブジェクトのキーとなる1つの引数を取ります。
localStorage.removeItem(key);
localStorage
のすべてのアイテムをクリアすることもできます。 これは、clear()
メソッドを使用して実行できます。
localStorage
に保存されているものをすべてクリアする方法は次のとおりです。
localStorage.clear();
これらのメソッドを使用すると、localStorage
からアイテムをすばやく削除およびクリアする機能が向上します。 ただし、localStorage
にはいくつかの制限があります。 localStorage
とsessionStorage
はどちらも、文字列のみを格納できます。 これを回避するには、JSONメソッドを使用する必要があります。
ステップ4—文字列以外の値をJSONで保存する
localStorage
は文字列値のみを保存できます。 オブジェクトまたは配列を値としてlocalStorage
に格納する場合は、JSON.stringify()
を使用してそれらを文字列に変換できます。 localStorage
でキーと値のペアを作成または更新する場合は、オブジェクトまたは配列を引数としてJSON.stringify()
を使用してください。
let myObj = { name: 'Skip', breed: 'Labrador' }; localStorage.setItem(key, JSON.stringify(myObj));
myObj
はオブジェクトですが、JSON.stringify(myObj)
はそれを文字列に変換します。 したがって、myObj
は有効なlocalStorage
値になります。
文字列化された値を読み取って返すには、JSON.parse()
メソッドを使用します。 JSON.parse()
メソッドはJSON文字列を受け取り、JavaScriptオブジェクトに変換します。 JSON.parse()
は、引数として.getItem()
を取ります。
let item = JSON.parse(localStorage.getItem(key));
これで、item
はkey
の値と等しく設定されます。 前のコードスニペットでは、key
の値はmyObj
の文字列化されたバージョンに設定されていました。 JSON.parse
を使用すると、myObj
がオブジェクトに変換されます。 したがって、item
は、文字列ではなく、オブジェクトとしてmyObj
と等しく設定されます。
JSON.stringify
を使用して配列とオブジェクトを文字列に変換し、JSON.parse
を使用してそれらを元に戻すことができると非常に便利です。 また、localStorage
が空かどうかを確認する方法も知っておく必要があります。
ステップ5—アイテムの確認
このステップでは、localStorage
内のアイテムの存在をテストします。 if
ステートメントを使用して、localStorage
がアイテムを保持しているかどうか、またはアイテムが空であるかどうかを確認できます。 これを行うには、localStorage
の長さを確認します。
if (localStorage.length > 0) { // ... }
localStorage.length
が0
より大きい場合、localStorage
オブジェクト内にアイテムがあります。 localStorage
にアイテムがない場合に備えて、else
ステートメントを含めます。
if (localStorage.length > 0) { // ... } else { // ... }
if
およびelse
ステートメントに適用するコードを含めることができます。 localStorage
のアイテムを繰り返し処理することをお勧めします。
ステップ6—アイテムの反復
localStorage
およびsessionStorage
オブジェクトは、forEach
メソッドをサポートしていません。 localStorage
の項目を反復処理するには、for
ループを使用します。
for (let i = 0; i < localStorage.length; i++){ }
key()
メソッドは、引数として整数を取り、対応するキーを返します。 for
ループを使用して、i
をkey()
の整数として渡します。
for (let i = 0; i < localStorage.length; i++){ let key = localStorage.key(i); }
getItem
メソッドを使用して、key
に対応する値を返します。
for (let i = 0; i < localStorage.length; i++){ let key = localStorage.key(i); let value = localStorage.getItem(key); }
console.log
ステートメントを作成して、key
とvalue
の両方を画面に出力します。
for (let i = 0; i < localStorage.length; i++){ let key = localStorage.key(i); let value = localStorage.getItem(key); console.log(key, value); }
key()
は、for
ループを使用してlocalStorage
を反復処理するのに非常に便利です。 すべてのブラウザがlocalStorage
をサポートしているわけではありません。
ステップ7—サポートを確認する
if
ステートメントを使用して、window
オブジェクトで使用可能かどうかを確認することにより、localStorage
サポートをテストできます。
if (window.localStorage) { // localStorage supported }
使用できますか…のWebサイトを使用して、主要なブラウザー間でlocalStorage
がサポートされているかどうかを確認することもできます。
結論
localStorage
またはsessionStorage
オブジェクトを使用して、キーと値のペアを格納できます。 localStorage
内のアイテムを操作できるようにするメソッドがあります。 このチュートリアルでは、localStorage
内のエントリを作成、削除、および更新しました。 また、JSONメソッドを使用して、配列とオブジェクトのデータを文字列に変換し、元に戻しました。
localStorage
またはsession
の代わりにCookieを使用するのが最適な場合があります。 クッキーとは何ですか?JavaScriptを使用してクッキーを操作する方法このトピックを徹底的にカバーし、素晴らしい次のステップです。