9 bibliothèques JavaScript pour travailler avec le stockage local
Feb 19, 2025 am 08:47 AM
L'API de stockage local HTML5 (partie du stockage Web) a une excellente prise en charge du navigateur et est appliquée dans de plus en plus d'applications. Il a une API simple, mais il présente également des inconvénients similaires aux cookies.
J'ai rencontré pas mal d'outils et de bibliothèques en utilisant l'API LocalStorage au cours de la dernière année, donc je les ai triés dans ce post avec quelques exemples de code et des discussions de fonctionnalités.
Points clés
- L'API de stockage local HTML5 est largement prise en charge et devient de plus en plus fréquente dans les applications, mais il a également certaines limites similaires aux cookies. Diverses bibliothèques JavaScript ont été développées pour améliorer et étendre leurs capacités.
- Lockr, Store.js et Lscache fournissent des emballages pour l'API localStorage, fournissant des méthodes et fonctions d'utilisation supplémentaires. Il s'agit notamment du stockage de différents types de données sans conversion manuelle, de la prise en charge plus profonde du navigateur et de la simulation du système de mise en cache d'objet de mémoire Memcached.
- secstore.js et localforage offrent plus de fonctionnalités professionnelles. SecStore.js ajoute une couche de sécurité via la bibliothèque Crypto JavaScript de Stanford, tandis que LocalForage construit par Mozilla fournit une API de stockage asynchrone à l'aide d'indexedDB ou de WebSQL.
- D'autres bibliothèques telles que Basil.js et LZ-String offrent des fonctionnalités uniques. Basil.js est une API localstorage, sessionstorage et cookie unifiée qui vous permet de définir des espaces de noms, des priorités de méthode de stockage et un stockage par défaut. LZ-String permet le stockage de grandes quantités de données dans LocalStorage via la compression.
Lockr
Lockr est un emballage pour l'API localStorage qui vous permet d'utiliser de nombreuses méthodes et fonctionnalités utiles. Par exemple, bien que LocalStorage se limite au stockage des cha?nes, Lockr vous permet de stocker différents types de données sans avoir à les convertir vous-même:
Lockr.set('website', 'SitePoint'); // 字符串 Lockr.set('categories', 8); // 數(shù)字 Lockr.set('users', [{ name: 'John Doe', age: 18 }, { name: 'Jane Doe', age: 19 }]); // 對(duì)象
Les autres fonctions incluent:
- Utilisez la méthode Lockr.get () pour récupérer toutes les paires de valeurs de clé
- Compiler toutes les paires de valeurs de clé dans un tableau à l'aide de la méthode Lockr.getall ()
- Utilisez la méthode Lockr.Flush () pour supprimer toutes les paires de valeurs de clé stockées
- Ajouter / supprimer des valeurs sous la touche de hachage à l'aide de Lockr.Sadd et Lockr.Srem
Le pont de stockage local
Une bibliothèque 1KB pour l'utilisation de LocalStorage comme canal de communication pour faciliter l'échange de messages entre les onglets du même navigateur. Une fois la bibliothèque incluse, voici l'exemple de code que vous pouvez utiliser:
// 發(fā)送消息 lsbridge.send('my-namespace', { message: 'Hello world!' }); // 監(jiān)聽(tīng)消息 lsbridge.subscribe('my-namespace', function(data) { console.log(data); // 打印:'Hello world!' });
Comme indiqué, la méthode Send () crée et envoie des messages, et la méthode abons () vous permet d'écouter des messages spécifiés. Vous pouvez en savoir plus sur la bibliothèque de cet article de blog.
grange
Cette bibliothèque fournit une API de type Redis qui fournit une "couche de stockage persistante rapide et atomisée" sur LocalStorage. Vous trouverez ci-dessous un exemple d'extrait de code tiré de la lecture du dép?t. Il démontre de nombreuses méthodes disponibles.
Lockr.set('website', 'SitePoint'); // 字符串 Lockr.set('categories', 8); // 數(shù)字 Lockr.set('users', [{ name: 'John Doe', age: 18 }, { name: 'Jane Doe', age: 19 }]); // 對(duì)象Les autres fonctionnalités de l'API
incluent la possibilité d'utiliser les valeurs de démarrage / fin pour obtenir des gammes, d'obtenir des tableaux d'articles et de compresser l'intégralité du magasin de données pour économiser de l'espace. Ce repo contient une référence complète à toutes les méthodes et à leurs fonctions.
store.js
Il s'agit d'un autre wrapper similaire à Lockr, mais cette fois, il fournit un support de navigateur plus profond via Fallback. ReadMe explique: "Store.js utilise LocalStorage lorsqu'il est disponible et retombe au comportement UserData dans IE6 et IE7. Il n'y a pas de flash pour ralentir le chargement de la page. Il n'y a pas de cookie pour augmenter la charge des demandes de réseau."
L'API de base est expliquée dans les commentaires du code suivant:
// 發(fā)送消息 lsbridge.send('my-namespace', { message: 'Hello world!' }); // 監(jiān)聽(tīng)消息 lsbridge.subscribe('my-namespace', function(data) { console.log(data); // 打?。?Hello world!' });
De plus, il existe des fonctionnalités plus avancées:
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']
Readme sur GitHub Repo Détails La profondeur de la prise en charge du navigateur et des bogues et des pièges potentiels à considérer (par exemple, certains navigateurs n'autorisent pas le stockage local en mode confidentialité).
lscache
Lscache est un autre wrapper localStorage, mais avec quelques fonctionnalités supplémentaires. Vous pouvez l'utiliser comme une simple API LocalStorage ou utiliser la fonctionnalité de l'émulation Memcached (Système de mise en cache d'objet Memory).
LSCACHE expose la méthode suivante, qui est décrite dans les commentaires du code:
// 在'website'中存儲(chǔ)'SitePoint' store.set('website', 'SitePoint'); // 獲取'website' store.get('website'); // 刪除'website' store.remove('website'); // 清除所有鍵 store.clear();
Comme la bibliothèque précédente, cette bibliothèque gère également la sérialisation, afin que vous puissiez stocker et récupérer des objets:
// 存儲(chǔ)對(duì)象字面量;在后臺(tái)使用JSON.stringify store.set('website', { name: 'SitePoint', loves: 'CSS' }); // 獲取存儲(chǔ)的對(duì)象;在后臺(tái)使用JSON.parse var website = store.get('website'); console.log(website.name + ' loves ' + website.loves); // 獲取所有存儲(chǔ)的值 console.log(store.getAll()); // 循環(huán)遍歷所有存儲(chǔ)的值 store.forEach(function(key, val) { console.log(key, val); });
Enfin, Lscache vous permet de diviser les données en "seaux". Consultez ce code:
// 設(shè)置一個(gè)帶有2分鐘過(guò)期時(shí)間的問(wèn)候語(yǔ) lscache.set('greeting', 'Hello World!', 2); // 獲取并顯示問(wèn)候語(yǔ) console.log(lscache.get('greeting')); // 刪除問(wèn)候語(yǔ) lscache.remove('greeting'); // 刷新整個(gè)緩存項(xiàng)目 lscache.flush(); // 只刷新過(guò)期的項(xiàng)目 lscache.flushExpired();
Notez que dans le deuxième journal, le résultat est nul. En effet, j'ai configuré un godet personnalisé avant de journaliser le résultat. Une fois que j'ai configuré un seau, rien n'a ajouté à Lscache avant que ce soit inaccessible, même si j'essaie de le rafra?chir. Seuls les articles du seau "Autre" sont accessibles ou rafra?chis. Ensuite, lorsque je réinitialise le seau, j'ai pu accéder à nouveau à mes données d'origine.
secstore.js
SecStore.js est une API de stockage de données qui ajoute une couche de sécurité facultative via la bibliothèque Crypto JavaScript de Stanford. secStore.js vous permet de sélectionner des méthodes de stockage: LocalStorage, SessionStorage ou cookie. Pour utiliser SecStore.js, vous devez également inclure la bibliothèque SJCL.JS mentionnée précédemment.
Ce qui suit est un exemple montrant comment enregistrer certaines données avec l'option Ecrypt définie sur "true":
lscache.set('website', { 'name': 'SitePoint', 'category': 'CSS' }, 4); // 從對(duì)象中檢索數(shù)據(jù) console.log(lscache.get('website').name); console.log(lscache.get('website').category);
Notez la méthode set () utilisée, qui passe dans les options que vous avez spécifiées (y compris les données personnalisées) et une fonction de rappel qui vous permet de tester les résultats. Ensuite, nous pouvons utiliser la méthode get () pour récupérer les données:
lscache.set('website', 'SitePoint', 2); console.log(lscache.get('website')); // 'SitePoint' lscache.setBucket('other'); console.log(lscache.get('website')); // null lscache.resetBucket(); console.log(lscache.get('website')); // 'SitePoint'
Si vous souhaitez utiliser SessionStorage ou des cookies au lieu de LocalStorage dans SecStore.js, vous pouvez le définir dans les options:
var storage = new secStore; var options = { encrypt: true, data: { key: 'data goes here' } }; storage.set(options, function(err, results) { if (err) throw err; console.log(results); });
localforage
Cette bibliothèque construite par Mozilla vous fournit une simple API de type localstorage, mais utilise un stockage asynchrone via indedDB ou WebSQL. L'API est exactement la même que localStorage (getItem (), setItem (), etc.), sauf que son API est asynchrone et que la syntaxe nécessite l'utilisation de rappels.
Ainsi, par exemple, vous n'obtiendrez pas la valeur de retour, que vous définissiez ou obtenez la valeur, mais vous pouvez gérer les données transmises à la fonction de rappel et gérer (facultatif) l'erreur:
Lockr.set('website', 'SitePoint'); // 字符串 Lockr.set('categories', 8); // 數(shù)字 Lockr.set('users', [{ name: 'John Doe', age: 18 }, { name: 'Jane Doe', age: 19 }]); // 對(duì)象
Quelques autres points sur la forage local:
- Soutenir JavaScript Promise
- comme les autres bibliothèques, il ne se limite pas seulement au stockage des cha?nes, mais aussi à définir et à obtenir des objets
- vous permet de définir des informations sur la base de données à l'aide de la méthode config ()
Basil.js
Basil.js est décrit comme une API localstorage, sessionstorage et cookie unifiée, qui contient des fonctionnalités uniques et très faciles à utiliser. La méthode de base peut être utilisée comme suit:
// 發(fā)送消息 lsbridge.send('my-namespace', { message: 'Hello world!' }); // 監(jiān)聽(tīng)消息 lsbridge.subscribe('my-namespace', function(data) { console.log(data); // 打?。?Hello world!' });
Vous pouvez également utiliser Basil.js pour tester si LocalStorage est disponible:
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']
Basil.js vous permet également d'utiliser des cookies ou des sessionstorage:
// 在'website'中存儲(chǔ)'SitePoint' store.set('website', 'SitePoint'); // 獲取'website' store.get('website'); // 刪除'website' store.remove('website'); // 清除所有鍵 store.clear();
Enfin, dans l'objet d'option, vous pouvez utiliser l'objet Option pour définir ce qui suit:
- Espaces de noms pour différentes parties des données
- Ordre préférentiel des méthodes de stockage à utiliser
- Méthode de stockage par défaut
- Date d'expiration des cookies
// 存儲(chǔ)對(duì)象字面量;在后臺(tái)使用JSON.stringify store.set('website', { name: 'SitePoint', loves: 'CSS' }); // 獲取存儲(chǔ)的對(duì)象;在后臺(tái)使用JSON.parse var website = store.get('website'); console.log(website.name + ' loves ' + website.loves); // 獲取所有存儲(chǔ)的值 console.log(store.getAll()); // 循環(huán)遍歷所有存儲(chǔ)的值 store.forEach(function(key, val) { console.log(key, val); });
lz-string
LZ-String Utility vous permet de stocker de grandes quantités de données dans LocalStorage en utilisant la compression, et il est très facile à utiliser. Après avoir inclus la bibliothèque sur la page, vous pouvez effectuer ce qui suit:
// 設(shè)置一個(gè)帶有2分鐘過(guò)期時(shí)間的問(wèn)候語(yǔ) lscache.set('greeting', 'Hello World!', 2); // 獲取并顯示問(wèn)候語(yǔ) console.log(lscache.get('greeting')); // 刪除問(wèn)候語(yǔ) lscache.remove('greeting'); // 刷新整個(gè)緩存項(xiàng)目 lscache.flush(); // 只刷新過(guò)期的項(xiàng)目 lscache.flushExpired();
Veuillez faire attention à l'utilisation des méthodes compress () et decompress (). Les commentaires dans le code ci-dessus montrent les valeurs de longueur avant et après la compression. Vous pouvez voir à quel point ce sera bénéfique, car le stockage du client est toujours limité dans l'espace.
Comme expliqué dans la documentation de la bibliothèque, vous pouvez choisir de compresser les données dans UInt8Array (un type de données plus récent en JavaScript) et même de compresser les données pour stocker en externe sur le client.
Mentions honorables
Les outils ci-dessus peuvent vous aider à faire presque tout ce que vous voulez faire dans LocalStorage, mais si vous cherchez plus, voici quelques outils et bibliothèques plus connexes que vous voudrez peut-être consulter.
- LOKIJS - Un magasin de données rapide et axé sur le document pour Node.js, les navigateurs et Cordova.
- Stockage du client AngularJS - Stockage du client d'espace de noms Angular JS. écrivez à Localstorage et retombez à Cookie. Il n'y a pas de dépendances externes à l'exception du noyau angulaire;
- Alasql.js - base de données JavaScript SQL et node.js pour les navigateurs. Gérer les tables associées traditionnelles et les données JSON imbriquées (NOSQL). Exporter, stocker et importer des données de LocalStorage, IndededDB ou Excel.
- Angular Locker - Abstraction simple et configurable du stockage local / session dans les projets angulaires, offrant une API lisse puissante et facile à utiliser.
- jscache - Activer le cache des fichiers JavaScript, des feuilles de styles CSS et des images à l'aide de localStorage.
- Largelocalstorage - surmontez divers défauts de navigateur et fournissez un grand stockage de valeurs clés du c?té du client.
Connaissez-vous d'autres bibliothèques?
Si vous avez construit des outils pour améliorer le stockage des clients en plus de l'API LocalStorage ou des outils connexes, n'hésitez pas à nous le faire savoir dans les commentaires.
(Le reste de l'article est la FAQ, qui a été réécrit et rationalisé selon le texte d'origine, et l'intention d'origine est maintenue)
Des questions fréquemment posées sur les référentiels locaux JavaScript (FAQ)
Q: Quels sont les avantages de l'utilisation des référentiels locaux JavaScript?
A: JavaScript Le référentiel local offre de nombreux avantages. Ils fournissent un moyen plus efficace de stocker des données du c?té client, ce qui peut améliorer considérablement les performances des applications Web. Ces bibliothèques offrent également un niveau de sécurité plus élevé que les méthodes de stockage traditionnelles de données, car elles permettent le cryptage des données. De plus, ils fournissent une interface plus conviviale pour la gestion des données, ce qui permet aux développeurs d'utiliser plus facilement le stockage local.
Q: Comment fonctionne le stockage local en JavaScript?
a: Le stockage local en JavaScript permet aux applications Web de persister dans le stockage des données dans un navigateur Web. Contrairement aux cookies, le stockage local n'expire pas et n'est pas renvoyé au serveur, ce qui en fait une méthode de stockage de données plus efficace. Les données stockées dans le stockage local sont enregistrées sur les séances du navigateur, ce qui signifie qu'elle est toujours disponible même si le navigateur est fermé et rouvert.
Q: Puis-je utiliser le stockage local pour des données sensibles?
a: Bien que le stockage local offre un moyen pratique de stocker des données sur le client, il n'est pas recommandé de les utiliser pour stocker des données sensibles. En effet, le stockage local n'est pas con?u comme un mécanisme de stockage sécurisé. Les données stockées dans le stockage local peuvent être facilement accessibles et manipulées à l'aide du code JavaScript simple. Par conséquent, les données sensibles telles que les mots de passe, les numéros de carte de crédit ou les informations personnelles ne doivent pas être stockées dans le stockage local.
Q: Comment gérer les données dans le stockage local?
a: Gestion des données dans le stockage local implique trois actions principales: la configuration des éléments, l'obtention d'éléments et la suppression des éléments. Pour définir le projet, vous pouvez utiliser la méthode setItem (), qui accepte deux paramètres: clé et valeur. Pour récupérer un élément, vous pouvez utiliser la méthode getItem (), qui accepte la clé comme argument et renvoie la valeur correspondante. Pour supprimer un élément, vous pouvez utiliser la méthode devayItem (), qui accepte une clé comme argument.
Q: Quels sont les référentiels JavaScript locaux populaires?
a: Il existe plusieurs référentiels locaux populaires pour JavaScript, y compris Store.js, LocalForage et JS-Cookie. Store.js fournit une API simple et cohérente pour le stockage local et fonctionne sur tous les principaux navigateurs. LocalForage fournit une puissante API de stockage asynchrone et prend en charge IndededDB, WebSQL et LocalStorage. JS-Cookie est une bibliothèque légère pour gérer les cookies qui peuvent être utilisés comme une seltime lorsque le stockage local n'est pas disponible.
Q: Comment vérifier si le stockage local est disponible?
a: Vous pouvez utiliser le bloc d'essai / capture simple en JavaScript pour vérifier si le stockage local est disponible. La propriété Window.Localstorage peut être utilisée pour accéder aux objets de stockage locaux. Le stockage local est disponible si cette propriété existe et peut être utilisée pour configurer et récupérer des articles.
Q: Quelle est la limite de stockage pour le stockage local?
a: Les limites de stockage pour le stockage local varient d'un navigateur à l'autre, mais sont généralement d'environ 5 Mo. Ceci est beaucoup plus grand que la limite de stockage des cookies (seulement 4 Ko). Cependant, il vaut mieux être conscient de la quantité de données que vous stockez dans votre stockage local, car trop de données peuvent ralentir vos applications Web.
Q: Le stockage local peut-il être partagé entre différents navigateurs?
a: Non, le stockage local ne peut pas être partagé entre différents navigateurs. Chaque navigateur Web a son propre stockage local indépendant, de sorte que les données stockées dans un navigateur ne seront pas disponibles dans un autre. Ceci est important lors de la conception d'applications Web qui reposent sur le stockage local.
Q: Comment effacer toutes les données dans le stockage local?
a: Vous pouvez utiliser la méthode Clear () pour effacer toutes les données du stockage local. Cette méthode n'accepte aucun paramètre et supprimera tous les éléments du stockage local. Soyez prudent lorsque vous utilisez cette méthode, car elle supprime en permanence toutes les données du stockage local.
Q: Le stockage local peut-il être utilisé sur les appareils mobiles?
a: Oui, le stockage local peut être utilisé sur les appareils mobiles. La plupart des navigateurs Web mobiles modernes prennent en charge le stockage local, vous pouvez donc l'utiliser sur des appareils de bureau et mobiles pour stocker des données. Cependant, les limitations de stockage sur les appareils mobiles peuvent être faibles, il est donc important de considérer cela lors de la conception d'applications Web.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Java et JavaScript sont différents langages de programmation, chacun adapté à différents scénarios d'application. Java est utilisé pour le développement des grandes entreprises et des applications mobiles, tandis que JavaScript est principalement utilisé pour le développement de pages Web.

JavaScriptCommentsaSententialFormantaining, Reading et GuidingCodeEexecution.1) unique-linecomesaUSEUSEFORQUICKEXPLANATIONS.2) Multi-linecommentSExPlainComplexLogicorProvideTailedDocumentation.3) Inlinecomementsclarifypecifications

Les points suivants doivent être notés lors du traitement des dates et du temps dans JavaScript: 1. Il existe de nombreuses fa?ons de créer des objets de date. Il est recommandé d'utiliser les cha?nes de format ISO pour assurer la compatibilité; 2. Get and définir des informations de temps peuvent être obtenues et définir des méthodes, et notez que le mois commence à partir de 0; 3. Les dates de mise en forme manuelle nécessitent des cha?nes et les bibliothèques tierces peuvent également être utilisées; 4. Il est recommandé d'utiliser des bibliothèques qui prennent en charge les fuseaux horaires, comme Luxon. La ma?trise de ces points clés peut éviter efficacement les erreurs courantes.

PlacertagsatthebottomofablogPostorwebPageSerSpracticalPurpossForseo, userexperience, anddesign.1.ithelpswithseobyallowingsechingenginestoaccesskeyword-elevanttagswithoutcluteringtheaincontent..itimproveserexperceenceegmentyepingthefocusonThearrlUl

Javascriptispreferredforwebdevelopment, tandis que javaisbetterforlarge-scalebackenSystemsandandroidApps.1)

JavascripthSsevenfundamentalDatatypes: nombre, cha?ne, booléen, indéfini, nul, objet, andymbol.1) nombres usUseadouble-précisformat, utile

La capture d'événements et la bulle sont deux étapes de la propagation des événements dans DOM. La capture est de la couche supérieure à l'élément cible, et la bulle est de l'élément cible à la couche supérieure. 1. La capture de l'événement est implémentée en définissant le paramètre UseCapture d'AdveventListener sur true; 2. événement Bubble est le comportement par défaut, UseCapture est défini sur False ou Omise; 3. La propagation des événements peut être utilisée pour empêcher la propagation des événements; 4. événement Bubbling prend en charge la délégation d'événements pour améliorer l'efficacité du traitement du contenu dynamique; 5. La capture peut être utilisée pour intercepter les événements à l'avance, telles que la journalisation ou le traitement des erreurs. La compréhension de ces deux phases aide à contr?ler avec précision le calendrier et comment JavaScript répond aux opérations utilisateur.

Java et JavaScript sont différents langages de programmation. 1.Java est un langage typique et compilé, adapté aux applications d'entreprise et aux grands systèmes. 2. JavaScript est un type dynamique et un langage interprété, principalement utilisé pour l'interaction Web et le développement frontal.
