検索
ホームページウェブフロントエンドjsチュートリアル9ローカルストレージを操作するためのJavaScriptライブラリ

9 JavaScript Libraries for Working with Local Storage

HTML5ローカルストレージAPI(Webストレージの一部)は優れたブラウザーサポートを備えており、ますます多くのアプリケーションに適用されています。単純なAPIがありますが、Cookieに似たいくつかの欠点もあります。

過去1年ほどでローカルストレージAPIを使用して、かなりの数のツールとライブラリに遭遇したので、いくつかのコードの例と機能の議論を使用して、この投稿にそれらを整理しました。

キーポイント

  • HTML5ローカルストレージAPIは広くサポートされており、アプリケーションでますます一般的になりつつありますが、Cookieと同様のいくつかの制限もあります。さまざまなJavaScriptライブラリが開発され、機能を改善および拡張しています。
  • lockr、store.js、およびlscacheは、LocalStorage APIのラッパーを提供し、追加の使用方法と機能を提供します。これらには、手動変換、より深いブラウザーサポート、およびMemcached Memoryオブジェクトキャッシュシステムのシミュレーションなしでさまざまなデータ型を保存することが含まれます。
  • secstore.jsとlocalforageは、より専門的な機能を提供します。 Secstore.jsは、Stanford JavaScript Crypto Libraryを通じてセキュリティの層を追加し、Mozillaが構築したLocalforageは、IndexEdDBまたはWebQLを使用して非同期ストレージAPIを提供します。
  • basil.jsやlz-stringなどの他のライブラリは、ユニークな機能を提供します。 Basil.jsは、統一されたLocalStorage、SessionStorage、およびCookie APIで、名前空間、ストレージメソッドの優先順位、およびデフォルトストレージを定義できるようにします。 LZ弦により、圧縮を介してLocalStorageで大量のデータを保存できます。

lockr

LockRは、多くの便利な方法と機能を使用できるLocalStorage APIのラッパーです。たとえば、LocalStorageは文字列の保存に限定されていますが、LockRを使用すると、自分で変換することなくさまざまなデータ型を保存できます。

Lockr.set('website', 'SitePoint'); // 字符串
Lockr.set('categories', 8); // 数字
Lockr.set('users', [{ name: 'John Doe', age: 18 }, { name: 'Jane Doe', age: 19 }]);
// 对象
その他の関数には以下が含まれます

lockr.get()メソッドを使用して、すべてのキー値ペアを取得
  • lockr.getAll()メソッドを使用して、すべてのキー値ペアを配列にコンパイルします
  • lockr.flush()メソッドを使用して、すべての保存されているキー価値ペアをすべて削除します
  • lockr.saddおよびlockr.srem
  • を使用してハッシュキーの下に値を追加/削除します
ローカルストレージブリッジ

同じブラウザのタブ間のメッセージ交換を容易にするために、ローカルストレージを通信チャネルとして使用するための1kbライブラリ。ライブラリが含まれたら、使用できるサンプルコードを次に示します。

示されているように、send()メソッドはメッセージを作成および送信し、subscribe()メソッドを使用すると、指定されたメッセージを聞くことができます。このブログ投稿でライブラリの詳細を読むことができます。

// 发送消息
lsbridge.send('my-namespace', { 
  message: 'Hello world!' 
});

// 监听消息
lsbridge.subscribe('my-namespace', function(data) {
  console.log(data); // 打印:'Hello world!'
});
barn

このライブラリは、LocalStorageの上に「高速で霧化された永続的なストレージ層」を提供するRedisのようなAPIを提供します。以下は、リポジトリのreadmeから取得したサンプルコードスニペットです。利用可能な多くの方法を示しています。

Lockr.set('website', 'SitePoint'); // 字符串
Lockr.set('categories', 8); // 数字
Lockr.set('users', [{ name: 'John Doe', age: 18 }, { name: 'Jane Doe', age: 19 }]);
// 对象

APIのその他の機能には、開始/終了値を使用して範囲を取得し、アイテム配列を取得し、データストア全体を圧縮してスペースを節約する機能が含まれます。このレポは、すべてのメソッドとその機能への完全な参照が含まれています。

store.js

これはLockRに似た別のラッパーですが、今回はフォールバックを通じてより深いブラウザのサポートを提供します。 Readmeは、「Store.jsは利用可能なときにLocalStorageを使用し、IE6およびIE7のユーザーDataの動作に戻ります。ページの読み込みを遅くするためのフラッシュはありません。ネットワークリクエストの負担を増やすクッキーはありません。」

基本的なAPIは、次のコードのコメントで説明されています。

さらに、さらに高度な機能がいくつかあります:

// 发送消息
lsbridge.send('my-namespace', { 
  message: 'Hello world!' 
});

// 监听消息
lsbridge.subscribe('my-namespace', function(data) {
  console.log(data); // 打印:'Hello world!'
});
GithubリポジトリのReadmeは、ブラウザのサポートの深さと潜在的なバグと落とし穴の詳細を検討する必要があります(たとえば、一部のブラウザでは、プライバシーモードでローカルストレージを許可しません)。

var barn = new Barn(localStorage);

barn.set('key', 'val');
console.log(barn.get('key')); // val

barn.lpush('list', 'val1');
barn.lpush('list', 'val2');
console.log(barn.rpop('list')); // val1
console.log(barn.rpop('list')); // val2

barn.sadd('set', 'val1');
barn.sadd('set', 'val2');
barn.sadd('set', 'val3');
console.log(barn.smembers('set')); // ['val1', 'val2', 'val3']
barn.srem('set', 'val3');
console.log(barn.smembers('set')); // ['val1', 'val2']
lscache

lscacheは別のLocalStorageラッパーですが、いくつかの追加機能があります。単純なローカルストレージAPIとして使用するか、Memcached(メモリオブジェクトキャッシュシステム)のエミュレート機能を使用できます。 lscacheは次の方法を公開します。これはコードのコメントで説明されています。

前のライブラリと同様に、このライブラリもシリアル化を処理しているため、オブジェクトを保存および取得できます。

最後に、Lscacheを使用すると、データを「バケット」に分割できます。このコードをチェックしてください:

// 在'website'中存储'SitePoint'
store.set('website', 'SitePoint');

// 获取'website'
store.get('website');

// 删除'website'
store.remove('website');

// 清除所有键
store.clear();

2番目のログでは、結果はnullであることに注意してください。これは、結果を記録する前にカスタムバケットをセットアップしたためです。バケツをセットアップしたら、リフレッシュしようとしても、これがアクセスできない前にlscacheに追加されるものはありません。 「他の」バケツのアイテムのみがアクセス可能またはリフレッシュ可能です。その後、バケットをリセットすると、元のデータに再びアクセスできました。

// 存储对象字面量;在后台使用JSON.stringify
store.set('website', {
  name: 'SitePoint',
  loves: 'CSS'
});

// 获取存储的对象;在后台使用JSON.parse
var website = store.get('website');
console.log(website.name + ' loves ' + website.loves);

// 获取所有存储的值
console.log(store.getAll());

// 循环遍历所有存储的值
store.forEach(function(key, val) {
  console.log(key, val);
});

secstore.js

// 设置一个带有2分钟过期时间的问候语
lscache.set('greeting', 'Hello World!', 2);

// 获取并显示问候语
console.log(lscache.get('greeting'));

// 删除问候语
lscache.remove('greeting');

// 刷新整个缓存项目
lscache.flush();

// 只刷新过期的项目
lscache.flushExpired();

Secstore.jsは、Stanford JavaScript Crypto Libraryにオプションのセキュリティレイヤーを追加するデータストレージAPIです。 secstore.jsを使用すると、Storage Method(localstorage、sessionstorage、またはcookie)を選択できます。 secstore.jsを使用するには、前述のsjcl.jsライブラリも含める必要があります。

以下は、「true」に設定された暗号化オプションを使用してデータを保存する方法を示す例です。 使用されたセット()メソッドに注意してください。これは、指定したオプション(カスタムデータを含む)と結果をテストできるコールバック関数に渡します。次に、get()メソッドを使用してデータを取得できます。

localforage

lscache.set('website', {
  'name': 'SitePoint',
  'category': 'CSS'
}, 4);

// 从对象中检索数据
console.log(lscache.get('website').name);
console.log(lscache.get('website').category);

Mozillaによって構築されたこのライブラリは、シンプルなLocalStorageのようなAPIを提供しますが、IndexEdDBまたはWebQLを介して非同期ストレージを使用します。 APIはlocalStorage(getItem()、setItem()など)とまったく同じですが、APIは非同期であり、構文にはコールバックの使用が必要です。

たとえば、

>値を設定するか取得するかに関係なく、返品値は取得されませんが、コールバック関数に渡されたデータを処理し、(オプション)エラーを処理できます。

Lockr.set('website', 'SitePoint'); // 字符串
Lockr.set('categories', 8); // 数字
Lockr.set('users', [{ name: 'John Doe', age: 18 }, { name: 'Jane Doe', age: 19 }]);
// 对象
localforageに関する他のいくつかのポイント:

    サポートJavaScript Promise
  • 他のライブラリと同様に、文字列を保存するだけでなく、オブジェクトを設定して取得することにも限定されます
  • config()メソッドを使用してデータベース情報を設定できます

basil.js

basil.jsは、ユニークで非常に使いやすい機能を含む統一されたLocalStorage、SessionStorage、およびCookie APIとして説明されています。基本的な方法は、次のように使用できます

basil.jsを使用して、LocalStorageが利用可能かどうかをテストすることもできます。
// 发送消息
lsbridge.send('my-namespace', { 
  message: 'Hello world!' 
});

// 监听消息
lsbridge.subscribe('my-namespace', function(data) {
  console.log(data); // 打印:'Hello world!'
});

basil.jsでは、CookieまたはsessionStorageを使用することもできます。

var barn = new Barn(localStorage);

barn.set('key', 'val');
console.log(barn.get('key')); // val

barn.lpush('list', 'val1');
barn.lpush('list', 'val2');
console.log(barn.rpop('list')); // val1
console.log(barn.rpop('list')); // val2

barn.sadd('set', 'val1');
barn.sadd('set', 'val2');
barn.sadd('set', 'val3');
console.log(barn.smembers('set')); // ['val1', 'val2', 'val3']
barn.srem('set', 'val3');
console.log(barn.smembers('set')); // ['val1', 'val2']
最後に、オプションオブジェクトでは、オプションオブジェクトを使用して以下を定義できます。

データのさまざまな部分の名前空間

// 在'website'中存储'SitePoint'
store.set('website', 'SitePoint');

// 获取'website'
store.get('website');

// 删除'website'
store.remove('website');

// 清除所有键
store.clear();
使用するストレージメソッドの優先順序

デフォルトストレージメソッド
  • Cookieの有効期限
  • lz-string
lz-stringユーティリティを使用すると、圧縮を使用してLocalStorageに大量のデータを保存できます。非常に使いやすいです。ページにライブラリを含めた後、次のことを行うことができます。
// 存储对象字面量;在后台使用JSON.stringify
store.set('website', {
  name: 'SitePoint',
  loves: 'CSS'
});

// 获取存储的对象;在后台使用JSON.parse
var website = store.get('website');
console.log(website.name + ' loves ' + website.loves);

// 获取所有存储的值
console.log(store.getAll());

// 循环遍历所有存储的值
store.forEach(function(key, val) {
  console.log(key, val);
});

compress()およびdecompress()メソッドの使用に注意してください。上記のコードのコメントは、圧縮の前後の長さの値を示しています。クライアントストレージは常にスペースが限られているため、これがどれほど有益であるかを見ることができます。 ライブラリのドキュメントで説明されているように、データをUINT8ARRAY(JavaScriptの新しいデータ型)に圧縮し、データを圧縮してクライアントに外部に保存することもできます。

名誉ある言及

// 设置一个带有2分钟过期时间的问候语
lscache.set('greeting', 'Hello World!', 2);

// 获取并显示问候语
console.log(lscache.get('greeting'));

// 删除问候语
lscache.remove('greeting');

// 刷新整个缓存项目
lscache.flush();

// 只刷新过期的项目
lscache.flushExpired();

上記のツールは、LocalStorageでやりたいほとんどすべてを行うのに役立つ場合がありますが、もっと探している場合は、チェックアウトしたい可能性のあるより関連するツールとライブラリをいくつか紹介します。

lokijs - node.js、ブラウザー、およびコルドバ用の高速でメモリ内のドキュメント指向のデータストア。

AngularJSクライアントストレージ - Angular JS Namespaceクライアントストレージ。 LocalStorageに手紙を書き、Cookieに戻ります。 Angular Core以外の外部依存関係はありません。

alasql.js - javascript sqlデータベースとnode.js for browsers。従来の関連テーブルとネストされたJSONデータ(NOSQL)を処理します。 LocalStorage、IndexEdDB、またはExcelからデータをエクスポート、保存、インポートします。

Angular-Locker - 角度プロジェクトでのローカル/セッションストレージのシンプルで構成可能な抽象化により、強力で使いやすいAPIが提供されます。
  • jScache - JavaScriptファイル、CSSスタイルシート、およびLocalStorageを使用した画像のキャッシュを有効にします。
  • largelocalStorage - さまざまなブラウザの欠陥を克服し、クライアント側に大きなキー価値ストレージを提供します。
  • 他のライブラリを知っていますか?
  • LocalStorage APIまたは関連ツールの上にクライアントストレージを強化するためのツールを作成した場合は、コメントでお気軽にお知らせください。

    (記事の残りの部分はFAQであり、元のテキストに従って書き直され、合理化されており、元の意図は維持されています)

    javaScriptローカルリポジトリ(FAQ)

    に関するよくある質問

    Q:JavaScriptローカルリポジトリを使用することの利点は何ですか?

    a:

    JavaScriptローカルリポジトリは多くの利点を提供します。クライアント側にデータを保存するためのより効率的な方法を提供し、Webアプリケーションのパフォーマンスを大幅に改善できます。また、これらのライブラリは、データ暗号化を許可するため、従来のデータストレージ方法よりも高いレベルのセキュリティを提供します。さらに、データ管理のためのよりユーザーフレンドリーなインターフェイスを提供し、開発者がローカルストレージを簡単に使用できるようにします。

    Q:Local StorageはJavaScriptでどのように機能しますか?

    a:

    JavaScriptのローカルストレージにより、WebアプリケーションはWebブラウザーにデータを保存することができます。 Cookieとは異なり、ローカルストレージは期限が切れず、サーバーに送り返されず、データストレージのより効率的な方法になります。ローカルストレージに保存されているデータは、ブラウザセッション全体に保存されます。つまり、ブラウザが閉じて再開された場合でも、利用可能です。

    Q:機密データにローカルストレージを使用できますか?

    a:

    ローカルストレージは、クライアントにデータを保存するための便利な方法を提供しますが、機密データを保存するために使用することはお勧めしません。これは、ローカルストレージが安全なストレージメカニズムとして設計されていないためです。ローカルストレージに保存されているデータは、簡単なJavaScriptコードを使用して簡単にアクセスして操作できます。したがって、パスワード、クレジットカード番号、個人情報などの機密データをローカルストレージに保存しないでください。

    Q:ローカルストレージでデータを管理する方法は?

    a:

    ローカルストレージでデータの管理には、アイテムのセットアップ、アイテムの取得、アイテムの削除という3つの主要なアクションが含まれます。プロジェクトを設定するには、キーと値の2つのパラメーターを受け入れるSetItem()メソッドを使用できます。アイテムを取得するには、getItem()メソッドを使用して、キーを引数として受け入れ、対応する値を返すことができます。アイテムを削除するには、引数としてキーを受け入れるRemoveItem()メソッドを使用できます。

    Q:人気のあるローカルJavaScriptリポジトリは何ですか?

    a:

    store.js、localforage、js-cookieなど、JavaScriptに人気のあるローカルリポジトリがいくつかあります。 Store.jsは、ローカルストレージにシンプルで一貫したAPIを提供し、すべての主要なブラウザーで実行します。 LocalForageは、強力な非同期ストレージAPIを提供し、IndexEdDB、WebQL、およびLocalStorageをサポートします。 JS-Cookieは、ローカルストレージが利用できない場合にフォールバックとして使用できるCookieを処理するための軽量ライブラリです。

    Q:ローカルストレージが利用可能かどうかを確認するにはどうすればよいですか?

    a:JavaScriptの単純なTry/Catchブロックを使用して、ローカルストレージが利用可能かどうかを確認できます。 window.localStorageプロパティを使用して、ローカルストレージオブジェクトにアクセスできます。このプロパティが存在する場合はローカルストレージを利用でき、アイテムのセットアップと取得に使用できます。

    Q:ローカルストレージのストレージ制限はいくらですか?

    a:ローカルストレージのストレージ制限は、ブラウザごとに異なりますが、通常は約5MBです。これは、Cookieのストレージ制限(4kbのみ)よりもはるかに大きいです。ただし、多くのデータがWebアプリケーションを遅くする可能性があるため、ローカルストレージに保存するデータの量に注意することをお勧めします。

    Q:ローカルストレージは異なるブラウザ間で共有できますか?

    a:いいえ、ローカルストレージは異なるブラウザ間で共有できません。各Webブラウザには独自の独立したローカルストレージがあるため、あるブラウザに保存されているデータは別のブラウザーでは利用できません。これは、ローカルストレージに依存するWebアプリケーションを設計するときに重要です。

    Q:ローカルストレージのすべてのデータをクリアする方法は?

    a:clear()メソッドを使用して、ローカルストレージ内のすべてのデータをクリアできます。この方法はパラメーターを受け入れず、ローカルストレージからすべてのアイテムを削除します。ローカルストレージ内のすべてのデータを永久に削除するため、この方法を使用する場合は注意してください。

    Q:モバイルデバイスでローカルストレージを使用できますか?

    a:はい、モバイルデバイスでローカルストレージを使用できます。ほとんどの最新のモバイルWebブラウザーはローカルストレージをサポートするため、デスクトップおよびモバイルデバイスで使用してデータを保存できます。ただし、モバイルデバイスのストレージ制限は低い場合があるため、Webアプリケーションを設計する際にはこれを考慮することが重要です。

以上が9ローカルストレージを操作するためのJavaScriptライブラリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptの文字列文字を交換しますJavaScriptの文字列文字を交換しますMar 11, 2025 am 12:07 AM

JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

独自のAjax Webアプリケーションを構築します独自のAjax Webアプリケーションを構築しますMar 09, 2025 am 12:11 AM

それで、あなたはここで、Ajaxと呼ばれるこのことについてすべてを学ぶ準備ができています。しかし、それは正確には何ですか? Ajaxという用語は、動的でインタラクティブなWebコンテンツを作成するために使用されるテクノロジーのゆるいグループ化を指します。 Ajaxという用語は、もともとJesse Jによって造られました

10 jQueryの楽しみとゲームプラグイン10 jQueryの楽しみとゲームプラグインMar 08, 2025 am 12:42 AM

10の楽しいjQueryゲームプラグインして、あなたのウェブサイトをより魅力的にし、ユーザーの粘着性を高めます! Flashは依然としてカジュアルなWebゲームを開発するのに最適なソフトウェアですが、jQueryは驚くべき効果を生み出すこともできます。また、純粋なアクションフラッシュゲームに匹敵するものではありませんが、場合によってはブラウザで予期せぬ楽しみもできます。 jquery tic toeゲーム ゲームプログラミングの「Hello World」には、JQueryバージョンがあります。 ソースコード jQueryクレイジーワードコンポジションゲーム これは空白のゲームであり、単語の文脈を知らないために奇妙な結果を生み出すことができます。 ソースコード jquery鉱山の掃引ゲーム

独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか?独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか?Mar 18, 2025 pm 03:12 PM

記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

jQuery Parallaxチュートリアル - アニメーションヘッダーの背景jQuery Parallaxチュートリアル - アニメーションヘッダーの背景Mar 08, 2025 am 12:39 AM

このチュートリアルでは、jQueryを使用して魅惑的な視差の背景効果を作成する方法を示しています。 見事な視覚的な深さを作成するレイヤー画像を備えたヘッダーバナーを構築します。 更新されたプラグインは、jQuery 1.6.4以降で動作します。 ダウンロードしてください

ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか?ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか?Mar 18, 2025 pm 03:14 PM

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

jqueryとajaxを使用した自動更新Divコンテンツjqueryとajaxを使用した自動更新DivコンテンツMar 08, 2025 am 12:58 AM

この記事では、JQueryとAjaxを使用して5秒ごとにDivのコンテンツを自動的に更新する方法を示しています。 この例は、RSSフィードからの最新のブログ投稿と、最後の更新タイムスタンプを取得して表示します。 読み込み画像はオプションです

Matter.jsを始めましょう:はじめにMatter.jsを始めましょう:はじめにMar 08, 2025 am 12:53 AM

Matter.jsは、JavaScriptで書かれた2D Rigid Body Physics Engineです。このライブラリは、ブラウザで2D物理学を簡単にシミュレートするのに役立ちます。剛体を作成し、質量、面積、密度などの物理的特性を割り当てる機能など、多くの機能を提供します。また、重力摩擦など、さまざまな種類の衝突や力をシミュレートすることもできます。 Matter.jsは、すべての主流ブラウザをサポートしています。さらに、タッチを検出し、応答性が高いため、モバイルデバイスに適しています。これらの機能はすべて、物理ベースの2Dゲームまたはシミュレーションを簡単に作成できるため、エンジンの使用方法を学ぶために時間をかける価値があります。このチュートリアルでは、このライブラリのインストールや使用法を含むこのライブラリの基本を取り上げ、

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。