WebストレージAPI
9572 ワード
データベースは、いくつかのデータを格納し、後でそれらを取得したいときにアプリケーションで重要なソフトウェアです.しかし、時々、我々はちょうどバックエンドに役に立たないいくつかの一時的なデータを保存することができて、問題を持たずに失われることができます.この場合、NOSQLまたはSQLデータベースでこれを保存することは、overkillすることができます.これは典型的な場合は、WebストレージAPIは素晴らしいことができます.でもなんだろう?使い方は?
それが私たちがこの記事で話すつもりです.
何ですか.
WebストレージAPIは、ブラウザにいくつかのキー/値データを格納する方法を提供します.
これらのデータは起源によって格納されるので、他の起源からデータを取得/更新/削除することはできません.
データを格納するには2通りあります. この2つのメカニズムは、私たちが記事の後で見るつもりである同じAPIを持っています.
これらの2つのメカニズムの違いは何ですか?
違いは、データが格納される期間です.あなたが使うとき
反対に
注意するいくつかのプロパティ データをシリアル化する必要がある 最大サイズは約5 MBです 常に同期 データ保護はない Webワーカーズでは使用できません
いつ使用するか.
LocalStorageとSessionStorageが役に立つ多くのユースケースがあります.ここでいくつかをリストします.
私の選択を覚えている:確認する必要があるアクションの後、それが自動的に次の同じアクションを確認するための選択を与えるためにユーザーフレンドリーです.
暗いテーマ:あなたが暗いテーマを作るとき、ユーザーがあなたのウェブサイトに入る最初の時、あなたは彼のシステムからテーマの好みを得ます.それにもかかわらず、彼はテーマを変更することを選択することができますので、次の時間のための彼の選択を覚えてみましょう.
ユーザーがあなたが保つために選んだ何でも(もちろん失われることができるもの)
SessionStorageで前の検索をしてください:ユーザーがあなたが同じセッションの間、前にフィルタをすることができる出品ページに戻るとき、そのおかげで.
...
使い方は?
APIは同じです さて、アクションで作業を見てみましょう
変更を聞くことが可能です
いつ役に立つのですか.
これは、ユーザーが他のウィンドウでテーマを変更したかどうかを知るために使用することができます.
場合は、また、他のウィンドウのテーマを変更することができます場合は
これをコード化しましょう.
クロムdevtools
代わりにコンソールを使用して何を持って見て
結論
WebストレージAPIでは、ブラウザに非敏感なデータを格納する2つの方法を提供しています.LocalStorageとSessionStorage.
両方の間の唯一の違いはデータがクリアされるときです、さもなければ、この2つのメカニズムの使用は同じです
With
ユースケースは複数です.
例えば、dev . toは、ポストの編集された最後のバージョンを格納するために使用します.それで、あなたが保存なしであなたのブラウザーをリフレッシュするならば、あなたはちょうど編集したバージョンを得ます.何度か私の人生を救った——
私のサイトでは、CSS変数と組み合わせてテーマモードで使用します.
コーディングを楽しむ.
データをバックエンドに送りませんので、何らかの認証をしたい場合は、例えばJWTトークンを保存するためにcookie APIを使用する方を好みます.はい、私はそれについて次の記事を行います、恐れないでください.
より構造化されたデータをブラウザに保存する場合は、IndexXDBを使用することもできます.
コメントすることを躊躇しないでください、そして、あなたがより多くを見たいならば、あなたは私に続くことができるか、私のところに行くことができますWebsite .
それが私たちがこの記事で話すつもりです.
何ですか.
WebストレージAPIは、ブラウザにいくつかのキー/値データを格納する方法を提供します.
これらのデータは起源によって格納されるので、他の起源からデータを取得/更新/削除することはできません.
データを格納するには2通りあります.
localStorage
sessionStorage
これらの2つのメカニズムの違いは何ですか?
違いは、データが格納される期間です.あなたが使うとき
localStorage
, データをJSまたはユーザーがキャッシュをクリアするまで保存されます.反対に
sessionStorage
これはセッションのデータを格納します.つまり、ユーザーがブラウザのタブを閉じるときに削除されます.注意するいくつかのプロパティ
いつ使用するか.
LocalStorageとSessionStorageが役に立つ多くのユースケースがあります.ここでいくつかをリストします.
私の選択を覚えている:確認する必要があるアクションの後、それが自動的に次の同じアクションを確認するための選択を与えるためにユーザーフレンドリーです.
暗いテーマ:あなたが暗いテーマを作るとき、ユーザーがあなたのウェブサイトに入る最初の時、あなたは彼のシステムからテーマの好みを得ます.それにもかかわらず、彼はテーマを変更することを選択することができますので、次の時間のための彼の選択を覚えてみましょう.
ユーザーがあなたが保つために選んだ何でも(もちろん失われることができるもの)
SessionStorageで前の検索をしてください:ユーザーがあなたが同じセッションの間、前にフィルタをすることができる出品ページに戻るとき、そのおかげで.
...
使い方は?
Storage
APIAPIは同じです
sessionStorage
and localStorage
. それはStorage
APIsetItem(key, value)
: ストレージに項目を追加します.キーが既に存在するならば、それは前の値を上書きします.getItem(key)
: キーに対応する値を取得します.キーが存在しない場合はnull
. removeItem(key)
: ストレージの渡されたキーを削除するclear()
: 現在のドメイン名のストレージのすべてのエントリを削除します.key(index)
: 指定したインデックスの値を取得します.このインデックスにキーがない場合、length
: ストレージ内の値の数を取得します.localStorage
:// Put "dark" for the key "theme_mode"
localStorage.setItem("theme_mode", "dark");
// Put "light" for the key "theme_mode"
localStorage.setItem("theme_mode", "light");
// Will print
// The current theme mode is: "light"
console.log(
"The current theme mode is:",
localStorage.getItem("theme_mode")
);
// Will print:
// The value in localStorage at the index 0 is: light
console.log(
"The value in localStorage at the index 0 is:",
localStorage.key(0)
);
// Remove the entry for "theme_mode"
localStorage.removeItem("theme_mode");
// Remove all values in localStorage
localStorage.clear();
Note: It's also possible to manipulate the data like you will do with a "simple" object:
// Set the value "dark" for "them_mode"
localStorage.theme_mode = "dark";
// Will print
// The current value of the theme mode is: dark
console.log(
"The current value of the theme mode is:",
localStorage.theme_mode
);
// Remove the entry corresponding to "theme_mode"
delete localStorage.theme_mode;
この場合、キーが存在しない場合はundefined
(not null
ライクgetItem
). また、すべての値をループせずにすべての値をすばやく削除する方法はありません.Note: The MDN encourages us not to use direct properties but to prefer the
Storage
API.
storage
イベント変更を聞くことが可能です
localStorage
イベントのおかげで他のページでstorage
. コールバックでは次のようになります.key
: で変更されたエントリのキーlocalStorage
. newValue
: 新しい値.oldValue
: 古い値.Note: An event is send only when the value has changed.
いつ役に立つのですか.
これは、ユーザーが他のウィンドウでテーマを変更したかどうかを知るために使用することができます.
場合は、また、他のウィンドウのテーマを変更することができます場合は
storage
イベント:)これをコード化しましょう.
// Configure the `storage` event handler
window.addEventListener(
"storage",
({ key, newValue, oldValue }) => {
// Do whatever we want here
// Probably first check the key received
}
);
完全なコードは以下の通りです.Note: To play with, open in a new window twice (on my computer I need to use browser's private mode, I'm investigate on the reason):
クロムdevtools
代わりにコンソールを使用して何を持って見て
localStorage
and sessionStorage
現在の起源については、devtoolのアプリケーションタブで直接見ることができます.結論
WebストレージAPIでは、ブラウザに非敏感なデータを格納する2つの方法を提供しています.LocalStorageとSessionStorage.
両方の間の唯一の違いはデータがクリアされるときです、さもなければ、この2つのメカニズムの使用は同じです
setItem
, getItem
, removeItem
or clear
.With
localStorage
他のページのユーザーのブラウザで開いた変更を聞くことができます.聞くイベントはストレージです.ユースケースは複数です.
例えば、dev . toは、ポストの編集された最後のバージョンを格納するために使用します.それで、あなたが保存なしであなたのブラウザーをリフレッシュするならば、あなたはちょうど編集したバージョンを得ます.何度か私の人生を救った——
私のサイトでは、CSS変数と組み合わせてテーマモードで使用します.
コーディングを楽しむ.
データをバックエンドに送りませんので、何らかの認証をしたい場合は、例えばJWTトークンを保存するためにcookie APIを使用する方を好みます.はい、私はそれについて次の記事を行います、恐れないでください.
より構造化されたデータをブラウザに保存する場合は、IndexXDBを使用することもできます.
コメントすることを躊躇しないでください、そして、あなたがより多くを見たいならば、あなたは私に続くことができるか、私のところに行くことができますWebsite .
Reference
この問題について(WebストレージAPI), 我々は、より多くの情報をここで見つけました https://dev.to/romaintrotard/lets-explore-the-web-storage-api-localstorage-and-sessionstorage-38ncテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol