国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table des matières
Moteur de paie en fonctionnement réel
TypeScript
réducteur comme fonction pure
Fonction de réducteur de test
Intégrer tous les contenus
Conclusion
Maison interface Web js tutoriel Une plongée profonde dans Redux

Une plongée profonde dans Redux

Feb 14, 2025 am 10:13 AM

A Deep Dive into Redux

Points de base

  • Redux simplifie la gestion de l'état dans les applications modernes en agissant comme un conteneur d'état prévisible, qui est essentiel pour maintenir la stabilité de l'application lorsqu'elle est mise à l'échelle.
  • L'intégration de typeScript améliore Redux en for?ant la sécurité de type, ce qui ajoute une couche de prévisibilité et aide à maintenir de grandes bases de code en simplifiant la refactorisation.
  • Le réducteur de Redux est con?u comme une fonction pure pour s'assurer qu'il n'a pas d'effets secondaires, améliorant ainsi la testabilité et la fiabilité de la gestion de l'état.
  • Utiliser la plaisanterie pour simplifier les tests unitaires, la plaisanterie fonctionne de manière transparente avec TypeScript pour tester les actions et les réducteurs Redux, garantissant que chaque composant fonctionne comme prévu.
  • Cet article démontre la mise en ?uvre réelle de Redux en créant un moteur de paie, montrant comment Redux gère les transitions d'état et traite des effets secondaires dans des scénarios d'application réels.

Construire une application moderne avec état est une tache complexe. à mesure que l'état change, l'application devient imprévisible et difficile à maintenir. C'est là que Redux entre en jeu. Redux est une bibliothèque légère pour gérer l'état. Considérez-le comme une machine d'état.

Dans cet article, j'explorerai en profondeur les conteneurs d'état de Redux en créant un moteur de traitement de la paie. L'application stockera la masse salariale avec tous les extras tels que les bonus et les options d'achat d'actions. J'utiliserai Pure JavaScript et TypeScript pour la vérification de type pour garder la solution simple. étant donné que Redux est très facile à tester, j'utiliserai également Jest pour vérifier l'application.

Dans ce tutoriel, je suppose que vous avez une certaine compréhension de JavaScript, de n?ud et de NPM.

Tout d'abord, vous pouvez initialiser cette application avec NPM:

npm init

Lorsque vous demandez des commandes de test, continuez à utiliser la plaisanterie. Cela signifie que NPM T commencera à plaisanter et exécutera tous les tests unitaires. Le fichier principal sera index.js pour rester simple. N'hésitez pas à répondre au reste des questions Init NPM.

J'utiliserai TypeScript pour effectuer la vérification de type et déterminer le modèle de données. Cela aide à conceptualiser ce que nous essayons de construire.

pour commencer avec TypeScript:

npm i typescript --save-dev

Je vais mettre certaines des dépendances dans le flux de travail de développement dans DevDependces. Cela montre clairement quelles dépendances sont préparées pour les développeurs et quelles dépendances seront utilisées dans les environnements de production. Une fois que TypeScript est prêt, ajoutez un script de démarrage dans package.json:

"start": "tsc && node .bin/index.js"

Créez un fichier index.ts dans le dossier SRC. Cela sépare le fichier source du reste du projet. Si vous commencez NPM, la solution ne sera pas exécutée. En effet, vous devez configurer TypeScript.

Créez un fichier tsconfig.json avec la configuration suivante:

{
  "compilerOptions": {
    "strict": true,
    "lib": ["esnext", "dom"],
    "outDir": ".bin",
    "sourceMap": true
  },
  "files": [
    "src/index"
  ]
}

J'aurais pu mettre cette configuration dans l'argument de la ligne de commande TSC. Par exemple, TSC SRC / INDEX.TS --TRICT .... Mais mettre tout cela dans un fichier séparé est beaucoup plus clair. Notez que le script de démarrage dans package.json ne nécessite qu'une commande TSC.

Voici quelques options de compilateur raisonnables qui nous donneront un bon point de départ et ce que chaque option signifie:

  • Strict: Activez toutes les options de vérification de type strict, c'est-à-dire - noimplicitany, --strictnullchecks, etc.
  • lib: une liste des fichiers de bibliothèque inclus dans le compilé.
  • outdir: redirigez la sortie vers ce répertoire.
  • SOURCEMAP: générer un fichier de carte source pour le débogage.
  • Fichiers: le fichier d'entrée fourni au compilateur.

Parce que j'utiliserai la plaisanterie pour les tests unitaires, je continuerai à l'ajouter:

npm init

La dépendance TS-Jest ajoute la vérification du type pour le cadre de test. Une chose à noter est d'ajouter une configuration de plaisanterie dans package.json:

npm i typescript --save-dev

Cela permet au Framework de test de récupérer les fichiers TypeScript et de savoir comment les convertir. Une belle fonctionnalité est que vous pouvez faire la vérification de type lors des tests unitaires. Pour vous assurer que ce projet est prêt, créez un dossier __tests__ contenant un fichier index.test.ts. Ensuite, un contr?le d'assainissement est effectué. Par exemple:

"start": "tsc && node .bin/index.js"

exécuter désormais NPM Start et NPM T ne provoquera aucune erreur. Cela nous dit que nous pouvons maintenant commencer à construire des solutions. Mais avant de faire cela, ajoutons Redux au projet:

{
  "compilerOptions": {
    "strict": true,
    "lib": ["esnext", "dom"],
    "outDir": ".bin",
    "sourceMap": true
  },
  "files": [
    "src/index"
  ]
}

Cette dépendance sera utilisée dans les environnements de production. Par conséquent, il n'est pas nécessaire de l'inclure avec --Save-DEV. Si vous vérifiez votre package.json, ce sera en dépendances.

Moteur de paie en fonctionnement réel

Le moteur de paie contiendra les éléments suivants: salaires, remboursements, bonus et options d'achat d'actions. Dans Redux, vous ne pouvez pas mettre à jour le statut directement. Au lieu de cela, une action est prévue pour informer le stockage de toute nouvelle modification.

donc cela laisse le type d'opération suivant:

npm i jest ts-jest @types/jest @types/node --save-dev

Le type d'exploitation PAY_DAY peut être utilisé pour émettre des chèques le jour de paie et suivre l'historique des salaires. Ces types d'opérations guident le reste de la conception alors que nous perfectionnons le moteur de paie. Ils capturent des événements dans le cycle de vie de l'état, comme la fixation du montant du salaire de base. Ces événements d'action peuvent être joints à n'importe quel contenu, qu'il s'agisse d'un événement de clic ou d'une mise à jour de données. Les types d'opération Redux sont abstraits d'où provient la planification. Le conteneur d'état peut s'exécuter sur le client et / ou sur le serveur.

TypeScript

En utilisant la théorie des types, je déterminerai le modèle de données basé sur les données de l'état. Pour chaque opération de paie, comme le type d'opération et le montant facultatif. Le montant est facultatif car Pay_day ne nécessite pas de fonds pour traiter la paie. Je veux dire, il peut facturer aux clients, mais l'ignorer pour l'instant (peut-être introduit dans la deuxième édition).

Par exemple, mettez-le dans src / index.ts:

"jest": {
  "preset": "ts-jest"
}

Pour l'état de la paie, nous avons besoin d'un attribut pour le salaire de base, le bonus, etc. Nous utiliserons également ce statut pour maintenir l'historique des salaires.

Cette interface TypeScript doit faire:

npm init

Pour chaque propriété, notez que TypeScript utilise un c?lon pour spécifier le type. Par exemple ,: numéro. Cela détermine le contrat de type et ajoute une prévisibilité au vérificateur de type. Redux peut être amélioré à l'aide d'un système de type avec des déclarations de type explicite. En effet, les conteneurs d'état Redux sont con?us pour un comportement prévisible.

Cette idée n'est ni folle ni radicale. Apprentissage Redux Chapitre 1 (Les membres de SitePoint Premium uniquement) explique bien cela.

à mesure que l'application change, la vérification du type ajoute une prévisibilité supplémentaire. à mesure que les applications se développent, la théorie des types aide également à simplifier la reconstruction de grands segments de code.

L'utilisation du moteur de conceptualisation de type aide désormais à créer les fonctions de fonctionnement suivantes:

npm i typescript --save-dev

La bonne chose est que si vous essayez de faire ProcessBasePay ('ABC'), le type Checker vous avertira. La destruction des contrats de type réduit la prévisibilité des conteneurs d'état. J'utilise un contrat d'exploitation unique comme la paie pour rendre le processeur de paie plus prévisible. Notez que le montant est défini dans l'objet Operation via l'abréviation de l'attribut ES6. L'approche la plus traditionnelle est le montant: le montant, qui est plus verbeux. Les fonctions Arrow, telles que () = & gt; ({}) sont un moyen concis d'écrire des fonctions qui renvoient les littéraux d'objet.

réducteur comme fonction pure

La fonction de réducteur nécessite un état et un paramètre de fonctionnement. L'état doit avoir un état initial avec une valeur par défaut. Alors, pouvez-vous imaginer à quoi pourrait ressembler notre état initial? Je pense que cela doit commencer à zéro avec une liste d'historique de salaire vide.

Exemple:

"start": "tsc && node .bin/index.js"
Le vérificateur de type s'assure que ce sont les valeurs correctes appartenant à cet objet. Avec l'état initial, commencez à créer la fonction de réducteur:

{
  "compilerOptions": {
    "strict": true,
    "lib": ["esnext", "dom"],
    "outDir": ".bin",
    "sourceMap": true
  },
  "files": [
    "src/index"
  ]
}
Le réducteur Redux a un modèle dans lequel tous les types de fonctionnement sont traités par des instructions de commutation. Mais avant d'itérer dans tous les cas de commutateur, je vais créer une variable locale réutilisable:

npm i jest ts-jest @types/jest @types/node --save-dev
Notez que si vous ne modifiez pas l'état global, vous pouvez modifier les variables locales. J'utilise l'opérateur LET pour indiquer que cette variable changera à l'avenir. La modification de l'état mondial (comme les paramètres d'état ou opérationnels) peut faire impurer le réducteur. Ce paradigme fonctionnel est crucial car la fonction de réducteur doit être maintenue pure. JavaScript du débutant à Ninja Chapitre 11 (membres de la prime SitePoint uniquement).

Démarrez l'instruction Switch of Reducer pour gérer le premier cas d'utilisation:

"jest": {
  "preset": "ts-jest"
}
J'utilise l'opérateur ES6 REST pour garder la propriété d'état inchangée. Par exemple, ... état. Vous pouvez écraser n'importe quel attribut après l'opérateur de repos dans un nouvel objet. Basepay vient de la déconstruction, ce qui ressemble beaucoup à la correspondance de motifs dans d'autres langues. La fonction comprotetotalpay est définie comme suit:

it('is true', () => {
  expect(true).toBe(true);
});
Veuillez noter que vous déduquerez les stocks car l'argent sera utilisé pour acheter des actions de l'entreprise. Supposons que vous souhaitiez faire face au remboursement:

npm init

étant donné que le montant est facultatif, assurez-vous qu'il a une valeur par défaut pour réduire l'échec. C'est l'avantage de TypeScript, car le type vérificateur repére ce piège et vous avertira. Le système de type conna?t certains faits, il peut donc faire des hypothèses raisonnables. Supposons que vous souhaitiez faire face au bonus:

npm i typescript --save-dev

Ce mode rend le réducteur lisible car il ne conserve que l'état. Vous obtenez le montant de l'opération, calculez le salaire total et créez un nouveau texte d'objet. Rien n'est différent lorsqu'il s'agit d'options d'achat d'actions:

"start": "tsc && node .bin/index.js"

Pour le traitement de la paie le jour de la paie, il nécessite l'effacement des bonus et le remboursement. Ces deux attributs ne sont pas conservés dans l'état dans chaque masse salariale. Et, ajoutez une entrée à l'historique des salaires. Les salaires de base et les options d'achat d'actions peuvent être conservés dans l'état car ils ne changent pas fréquemment. Dans cet esprit, c'est ainsi que Pay_day est géré:

{
  "compilerOptions": {
    "strict": true,
    "lib": ["esnext", "dom"],
    "outDir": ".bin",
    "sourceMap": true
  },
  "files": [
    "src/index"
  ]
}

Dans un tableau comme NewPayHistory, utilisez l'opérateur d'extension, qui est l'antonym pour le repos. Contrairement au reste de la propriété dans l'objet de collecte, il élargit le projet. Par exemple, [... Payhistory]. Bien que les deux opérateurs ressemblent, ils ne sont pas les mêmes. Regardez attentivement, car cela peut appara?tre dans les questions d'entrevue.

Utilisation de POP () pour Payhistory ne changera pas l'état. Pourquoi? Parce que Slice () renvoie un tout nouveau tableau. Les tableaux en JavaScript sont copiés par référence. L'attribution d'un tableau à une nouvelle variable ne modifie pas l'objet sous-jacent. Par conséquent, il faut prendre soin de traiter ces types d'objets.

Parce que LastPayHistory n'est probablement pas défini, j'utilise la fusion de la valeur nulle du pauvre pour l'initialiser à zéro. Veuillez noter que (O && o.property) || 0 Le mode est utilisé pour la fusion. Il peut y avoir un moyen plus élégant de le faire dans les futures versions de JavaScript ou même de type dactylographié.

Chaque réducteur Redux doit définir une branche par défaut. Pour s'assurer que l'état ne devient pas indéfini:

npm i jest ts-jest @types/jest @types/node --save-dev

Fonction de réducteur de test

L'un des nombreux avantages de l'écriture de fonctions pures est qu'elles sont faciles à tester. Les tests unitaires sont un test où vous devez vous attendre à un comportement prévisible, et vous pouvez automatiser tous les tests dans le cadre de la construction. Dans __tests __ / index.test.ts, annulez le test virtuel et importez toutes les fonctions d'intérêt:

"jest": {
  "preset": "ts-jest"
}

Notez que toutes les fonctions sont définies pour exporter, vous pouvez donc les importer. Pour le salaire de base, démarrez le réducteur du moteur de paie et testez-le:

it('is true', () => {
  expect(true).toBe(true);
});

redux définit l'état initial à un non-défini. Par conséquent, c'est toujours une bonne idée de fournir des valeurs par défaut dans la fonction réductrice. Que diriez-vous de gérer le remboursement?

npm i redux --save

Le modèle de bonus de manipulation est le même que celui-ci:

const BASE_PAY = 'BASE_PAY';
const REIMBURSEMENT = 'REIMBURSEMENT';
const BONUS = 'BONUS';
const STOCK_OPTIONS = 'STOCK_OPTIONS';
const PAY_DAY = 'PAY_DAY';

pour les options d'achat d'actions:

interface PayrollAction {
  type: string;
  amount?: number;
}

Notez que lorsque les stocks sont supérieurs à TotalPay, TotalPay doit rester inchangé. étant donné que cette entreprise hypothétique est éthique, elle ne veut pas prendre d'argent à ses employés. Si vous exécutez ce test, veuillez noter que TotalPay est réglé sur -10, car les stocks seront déduits. C'est pourquoi nous testons le code! Corrigeons l'endroit où le salaire total est calculé:

npm init

Si l'argent gagné par les employés n'a pas assez d'argent pour acheter des actions de l'entreprise, veuillez continuer à ignorer la déduction. Assurez-vous également qu'il réinitialise les stocks à zéro:

npm i typescript --save-dev

Ce correctif détermine s'ils ont suffisamment d'argent dans NewStockoptions. Avec cela, le test unitaire passe, le code est sain et significatif. Nous pouvons tester des cas d'utilisation positifs où il y a suffisamment d'argent pour effectuer des déductions:

"start": "tsc && node .bin/index.js"

Pour les jours de paie, utilisez plusieurs statuts pour tester et assurez-vous qu'une transaction unique ne persiste pas:

{
  "compilerOptions": {
    "strict": true,
    "lib": ["esnext", "dom"],
    "outDir": ".bin",
    "sourceMap": true
  },
  "files": [
    "src/index"
  ]
}

Notez comment j'ajuste OldState pour vérifier le bonus et réinitialiser le remboursement à zéro.

Qu'en est-il de la branche par défaut du réducteur?

npm i jest ts-jest @types/jest @types/node --save-dev

redux définit un type d'opération comme init_action au début. Nous ne nous soucions que si notre réducteur a un ensemble d'état initial.

Intégrer tous les contenus

à ce stade, vous pouvez commencer à vous demander si Redux est plus un modèle de conception. Si vous répondez qu'il s'agit à la fois d'un modèle et d'une bibliothèque légère, vous avez raison. Dans index.ts, importer redux:

"jest": {
  "preset": "ts-jest"
}

L'exemple de code suivant peut être enveloppé autour de cette instruction IF. Il s'agit d'un stopgap pour que les tests unitaires ne fuisent pas dans les tests d'intégration:

it('is true', () => {
  expect(true).toBe(true);
});

Je ne recommande pas de le faire dans des projets réels. Les modules peuvent être placés dans des fichiers séparés pour isoler les composants. Cela facilite la lecture et ne fuit pas de problèmes. Les tests unitaires bénéficient également du fait que les modules fonctionnent indépendamment.

Utilisez PayrollenginerDeducer pour démarrer le stockage redux:

npm i redux --save

Chaque magasin.Subscribe () renvoie une fonction ultérieure de désabscription () qui peut être utilisée pour le nettoyage. Il se désabonne au rappel lorsqu'il est planifié via le stockage. Ici, j'utilise store.getState () pour sortir l'état actuel de la console.

Supposons que l'employé soit gagné 300, avait 50 remboursements, 100 bonus et 15 pour les actions de l'entreprise:

const BASE_PAY = 'BASE_PAY';
const REIMBURSEMENT = 'REIMBURSEMENT';
const BONUS = 'BONUS';
const STOCK_OPTIONS = 'STOCK_OPTIONS';
const PAY_DAY = 'PAY_DAY';

pour le rendre plus amusant, faire 50 autres remboursements et traiter une autre masse salariale:

interface PayrollAction {
  type: string;
  amount?: number;
}

Enfin, exécutez une autre masse salariale et désinscrivez-vous à Redux Storage:

interface PayStubState {
  basePay: number;
  reimbursement: number;
  bonus: number;
  stockOptions: number;
  totalPay: number;
  payHistory: Array<PayHistoryState>;
}

interface PayHistoryState {
  totalPay: number;
  totalCompensation: number;
}

Le résultat final est le suivant:

export const processBasePay = (amount: number): PayrollAction =>
  ({type: BASE_PAY, amount});
export const processReimbursement = (amount: number): PayrollAction =>
  ({type: REIMBURSEMENT, amount});
export const processBonus = (amount: number): PayrollAction =>
  ({type: BONUS, amount});
export const processStockOptions = (amount: number): PayrollAction =>
  ({type: STOCK_OPTIONS, amount});
export const processPayDay = (): PayrollAction =>
  ({type: PAY_DAY});

Comme indiqué, Redux maintient l'état, modifie l'état et informe les abonnés dans un petit paquet soigné. Considérez Redux comme une machine d'état, qui est la véritable source des données d'état. Tout cela adopte les meilleures pratiques de codage, comme un paradigme fonctionnel solide.

Conclusion

redux fournit une solution simple aux problèmes de gestion des états complexes. Il repose sur le paradigme fonctionnel pour réduire l'imprévisibilité. Parce que le réducteur est une fonction pure, les tests unitaires sont très faciles. J'ai décidé d'utiliser JEST, mais tout cadre de test qui prend en charge les affirmations de base fonctionnera.

TypeScript utilise la théorie du type pour ajouter une couche de protection supplémentaire. Combinez la vérification des types avec la programmation fonctionnelle et vous obtenez un code robuste qui n'est presque jamais interrompu. Plus important encore, TypeScript ne gêne pas le travail tout en ajoutant de la valeur. Si vous remarquez, une fois le contrat de type en place, il n'y a presque pas de codage supplémentaire. Le vérificateur de type fait le reste. Comme tout bon outil, TypeScript automatise la discipline de codage tout en restant invisible. Broking dactylographié bruyamment, mais il mord légèrement.

Si vous souhaitez essayer ce projet (j'espère que vous le faites), vous pouvez trouver le code source de cet article sur GitHub.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Tutoriel PHP
1502
276
Comment faire une demande HTTP dans Node.js? Comment faire une demande HTTP dans Node.js? Jul 13, 2025 am 02:18 AM

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

Types de données JavaScript: référence primitive vs Types de données JavaScript: référence primitive vs Jul 13, 2025 am 02:43 AM

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.

Objet JavaScript Time, quelqu'un construit un site Web Eactexe, plus rapide sur Google Chrome, etc. Objet JavaScript Time, quelqu'un construit un site Web Eactexe, plus rapide sur Google Chrome, etc. Jul 08, 2025 pm 02:27 PM

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

Gestion des promesses: cha?nage, gestion des erreurs et combinateurs de promesses en javascript Gestion des promesses: cha?nage, gestion des erreurs et combinateurs de promesses en javascript Jul 08, 2025 am 02:40 AM

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)

Qu'est-ce que l'API Cache et comment est-elle utilisée avec les travailleurs du service? Qu'est-ce que l'API Cache et comment est-elle utilisée avec les travailleurs du service? Jul 08, 2025 am 02:43 AM

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.

JS Roundup: une plongée profonde dans la boucle d'événement JavaScript JS Roundup: une plongée profonde dans la boucle d'événement JavaScript Jul 08, 2025 am 02:24 AM

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.

Comprendre l'événement bouillonnant et capturer dans les événements JavaScript DOM Comprendre l'événement bouillonnant et capturer dans les événements JavaScript DOM Jul 08, 2025 am 02:36 AM

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.

Un tour d'horizon des fonctions d'ordre supérieur au-delà de la carte et du filtre Un tour d'horizon des fonctions d'ordre supérieur au-delà de la carte et du filtre Jul 10, 2025 am 11:41 AM

Dans les tableaux JavaScript, en plus de la carte et du filtre, il existe d'autres méthodes puissantes et rarement utilisées. 1. La réduction peut non seulement résumer, mais également compter, se regrouper, aplatir les tableaux et construire de nouvelles structures; 2. Find et FindIndex sont utilisés pour trouver des éléments ou des index individuels; 3.Il et tout sont utilisés pour déterminer si les conditions existent ou que toutes les personnes se rencontrent; 4.Sort peut être trié mais changera le tableau d'origine; 5. Faites attention à la copie du tableau lorsque vous l'utilisez pour éviter les effets secondaires. Ces méthodes rendent le code plus concis et efficace.

See all articles