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 }]); // 對象
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)聽消息 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 }]); // 對象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)聽消息 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'中存儲'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:
// 存儲對象字面量;在后臺使用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()); // 循環(huán)遍歷所有存儲的值 store.forEach(function(key, val) { console.log(key, val); });
Enfin, Lscache vous permet de diviser les données en "seaux". Consultez ce code:
// 設置一個帶有2分鐘過期時間的問候語 lscache.set('greeting', 'Hello World!', 2); // 獲取并顯示問候語 console.log(lscache.get('greeting')); // 刪除問候語 lscache.remove('greeting'); // 刷新整個緩存項目 lscache.flush(); // 只刷新過期的項目 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); // 從對象中檢索數(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 }]); // 對象
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)聽消息 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'中存儲'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
// 存儲對象字面量;在后臺使用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()); // 循環(huán)遍歷所有存儲的值 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:
// 設置一個帶有2分鐘過期時間的問候語 lscache.set('greeting', 'Hello World!', 2); // 獲取并顯示問候語 console.log(lscache.get('greeting')); // 刪除問候語 lscache.remove('greeting'); // 刷新整個緩存項目 lscache.flush(); // 只刷新過期的項目 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)

Il existe trois fa?ons courantes d'initier des demandes HTTP dans Node.js: utilisez des modules intégrés, Axios et Node-Fetch. 1. Utilisez le module HTTP / HTTPS intégré sans dépendances, ce qui convient aux scénarios de base, mais nécessite un traitement manuel de la couture des données et de la surveillance des erreurs, tels que l'utilisation de https.get () pour obtenir des données ou envoyer des demandes de post via .write (); 2.AXIOS est une bibliothèque tierce basée sur la promesse. Il a une syntaxe concise et des fonctions puissantes, prend en charge l'async / attendre, la conversion JSON automatique, l'intercepteur, etc. Il est recommandé de simplifier les opérations de demande asynchrones; 3.Node-Fetch fournit un style similaire à la récupération du navigateur, basé sur la promesse et la syntaxe simple

Les types de données JavaScript sont divisés en types primitifs et types de référence. Les types primitifs incluent la cha?ne, le nombre, le booléen, le nul, un non défini et le symbole. Les valeurs sont immuables et les copies sont copiées lors de l'attribution des valeurs, de sorte qu'elles ne se affectent pas; Les types de référence tels que les objets, les tableaux et les fonctions stockent les adresses de mémoire, et les variables pointant vers le même objet s'afferchent mutuellement. Le typeof et l'instance de OFF peuvent être utilisés pour déterminer les types, mais prêtent attention aux problèmes historiques de typeofnull. Comprendre ces deux types de différences peut aider à écrire un code plus stable et fiable.

Bonjour, développeurs JavaScript! Bienvenue dans JavaScript News de cette semaine! Cette semaine, nous nous concentrerons sur: le différend de marque d'Oracle avec Deno, les nouveaux objets Time JavaScript sont pris en charge par les navigateurs, les mises à jour Google Chrome et certains outils de développeurs puissants. Commen?ons! Le différend de marque d'Oracle avec la tentative de Deno Oracle d'enregistrer une marque "JavaScript" a provoqué la controverse. Ryan Dahl, le créateur de Node.js et Deno, a déposé une pétition pour annuler la marque, et il pense que JavaScript est un niveau ouvert et ne devrait pas être utilisé par Oracle

Cacheapi est un outil fourni par le navigateur pour mettre en cache les demandes de réseau, qui est souvent utilisée en conjonction avec travailleur de service pour améliorer les performances du site Web et l'expérience hors ligne. 1. Il permet aux développeurs de stocker manuellement des ressources telles que des scripts, des feuilles de style, des photos, etc.; 2. Il peut faire correspondre les réponses du cache en fonction des demandes; 3. Il prend en charge la suppression des caches spécifiques ou la nettoyage du cache entier; 4. Il peut mettre en ?uvre des stratégies de priorité de cache ou de priorité de réseau grace à l'écoute des événements Fetch; 5. Il est souvent utilisé pour le support hors ligne, accélérez la vitesse d'accès répétée, préchargement des ressources clés et du contenu de mise à jour des antécédents; 6. Lorsque vous l'utilisez, vous devez faire attention au contr?le de la version du cache, aux restrictions de stockage et à la différence entre le mécanisme de mise en cache HTTP.

La promesse est le mécanisme central pour gérer les opérations asynchrones en JavaScript. Comprendre les appels de cha?ne, la gestion des erreurs et les combinants est la clé pour ma?triser leurs applications. 1. L'appel de la cha?ne renvoie une nouvelle promesse à travers. Puis () pour réaliser la concaténation des processus asynchrones. Chaque .then () re?oit le résultat précédent et peut renvoyer une valeur ou une promesse; 2. La gestion des erreurs doit utiliser .catch () pour attraper des exceptions pour éviter les défaillances silencieuses, et peut renvoyer la valeur par défaut dans Catch pour continuer le processus; 3. Combinateurs tels que promesse.all () (réussi avec succès uniquement après tout succès), promesse.race () (le premier achèvement est retourné) et promesse.allsetTled () (en attente de toutes les achèvements)

Des méthodes intégrées de la matrice JavaScript telles que .map (), .filter () et .reduce () peuvent simplifier le traitement des données; 1) .map () est utilisé pour convertir les éléments un en un pour générer de nouveaux tableaux; 2) .filter () est utilisé pour filtrer les éléments par condition; 3) .reduce () est utilisé pour agréger les données en tant que valeur unique; Une mauvaise utilisation doit être évitée lorsqu'elle est utilisée, entra?nant des effets secondaires ou des problèmes de performance.

La boucle d'événement de JavaScript gère les opérations asynchrones en coordonnant les piles d'appels, les webapis et les files d'attente de taches. 1. La pile d'appels exécute du code synchrone, et lors de la rencontre de taches asynchrones, il est remis à WebAPI pour le traitement; 2. Une fois que le WebAPI a terminé la tache en arrière-plan, il met le rappel dans la file d'attente correspondante (macro tache ou micro tache); 3. La boucle d'événement vérifie si la pile d'appels est vide. S'il est vide, le rappel est retiré de la file d'attente et poussé dans la pile d'appels pour l'exécution; 4. Micro taches (comme Promise. puis) ??prendre la priorité sur les taches macro (telles que Settimeout); 5. Comprendre la boucle d'événements permet d'éviter de bloquer le thread principal et d'optimiser l'ordre d'exécution du code.

Les bulles d'événements se propagent de l'élément cible vers l'extérieur vers le n?ud d'ancêtre, tandis que la capture d'événements se propage de la couche externe vers l'intérieur vers l'élément cible. 1. événements Bubbles: Après avoir cliqué sur l'élément enfant, l'événement déclenche l'auditeur de l'élément parent vers le haut. Par exemple, après avoir cliqué sur le bouton, il sortira d'abord cliqué sur l'enfant, puis parent. 2. Capture d'événement: définissez le troisième paramètre sur true, afin que l'auditeur soit exécuté dans l'étape de capture, tels que le déclenchement de l'écouteur de capture de l'élément parent avant de cliquer sur le bouton. 3. Les utilisations pratiques incluent la gestion unifiée des événements d'éléments enfants, le prétraitement d'interception et l'optimisation des performances. 4. Le flux d'événements DOM est divisé en trois étapes: capture, cible et bulle, et l'écouteur par défaut est exécuté dans l'étape de la bulle.
