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

Heim Web-Frontend js-Tutorial Einführung in Jest: Unit-Tests, Mocking und asynchroner Code

Einführung in Jest: Unit-Tests, Mocking und asynchroner Code

Nov 01, 2024 am 12:23 AM

Introduction to Jest: Unit Testing, Mocking, and Asynchronous Code

Einführung in Jest

Jest ist eine Bibliothek zum Testen von JavaScript-Code.

Es handelt sich um ein von Facebook verwaltetes Open-Source-Projekt, das sich besonders gut zum Testen von React-Code eignet, aber nicht darauf beschr?nkt ist: Es kann jeden JavaScript-Code testen. Seine St?rken sind:

  • es geht schnell
  • es kann Snapshot-Tests durchführen
  • Es ist eigensinnig und bietet alles sofort einsatzbereit, ohne dass Sie Entscheidungen treffen müssen
export default function sum(a, n) {
  return a + b;
}

divide.test.js

import sum from './sum';

// Describe the test and wrap it in a function.
it('adds 1 + 2 to equal 3', () => {
  const result = sum(1, 2);

  // Jest uses matchers, like pretty much any other JavaScript testing framework.
  // They're designed to be easy to get at a glance;
  // here, you're expecting `result` to be 3.
  expect(result).toBe(3);
});

Matcher

Ein Matcher ist eine Methode, mit der Sie Werte testen k?nnen.

  • toBe vergleicht strikte Gleichheit mit ===
  • toEqual vergleicht die Werte zweier Variablen. Wenn es sich um ein Objekt oder Array handelt, prüft es die Gleichheit aller Eigenschaften oder Elemente
  • toBeNull ist wahr, wenn ein Nullwert übergeben wird
  • toBeDefined ist wahr, wenn ein definierter Wert übergeben wird (im Gegensatz zu oben)
  • toBeUndefined ist wahr, wenn ein undefinierter Wert übergeben wird
  • toBeCloseTo wird verwendet, um Gleitkommawerte zu vergleichen und Rundungsfehler zu vermeiden
  • toBeTruthy wahr, wenn der Wert als wahr angesehen wird (wie es bei einem ?Wenn“ der Fall ist)
  • toBeFalsy wahr, wenn der Wert als falsch angesehen wird (wie es bei einem ?Wenn“ der Fall ist)
  • toBeGreaterThan wahr, wenn das Ergebnis von Expect() h?her ist als das Argument
  • toBeGreaterThanOrEqual wahr, wenn das Ergebnis von Expect() gleich dem Argument oder h?her als das Argument ist
  • toBeLessThan wahr, wenn das Ergebnis von Expect() kleiner ist als das Argument
  • toBeLessThanOrEqual wahr, wenn das Ergebnis von Expect() gleich dem Argument oder kleiner als das Argument ist
  • toMatch wird verwendet, um Zeichenfolgen mit dem Mustervergleich regul?rer Ausdrücke zu vergleichen
  • toContain wird in Arrays verwendet, true, wenn das erwartete Array das Argument in seiner Elementmenge enth?lt
  • toHaveLength(number): prüft die L?nge eines Arrays
  • toHaveProperty(key, value): prüft, ob ein Objekt eine Eigenschaft hat, und prüft optional seinen Wert
  • toThrow prüft, ob eine von Ihnen übergebene Funktion eine Ausnahme (allgemein) oder eine bestimmte Ausnahme ausl?st
  • toBeInstanceOf(): prüft, ob ein Objekt eine Instanz einer Klasse ist

Abh?ngigkeiten

Eine Abh?ngigkeit ist ein Codeabschnitt, von dem Ihre Anwendung abh?ngt. Es k?nnte sich um eine Funktion/ein Objekt in unserem Projekt oder eine Abh?ngigkeit eines Drittanbieters (z. B. Axios) handeln

Ein Code wird zu einer echten Abh?ngigkeit, wenn Ihre eigene Anwendung ohne ihn nicht funktionieren kann.

Zum Beispiel, wenn Sie in Ihrer Anwendung eine Funktion implementieren, um E-Mails zu senden, API-Anfragen zu stellen oder ein Konfigurationsobjekt zu erstellen usw.

Es gibt zwei M?glichkeiten, wie wir in unserem Code in einem js-Projekt Abh?ngigkeiten hinzufügen k?nnen:

Importe

export default function sum(a, n) {
  return a + b;
}

Abh?ngigkeitsinjektion

Nur ??ein schicker Begriff für ein einfaches Konzept.

Wenn Ihre Funktion einige Funktionen von einer externen Abh?ngigkeit ben?tigt, fügen Sie sie einfach als Argument ein.

import sum from './sum';

// Describe the test and wrap it in a function.
it('adds 1 + 2 to equal 3', () => {
  const result = sum(1, 2);

  // Jest uses matchers, like pretty much any other JavaScript testing framework.
  // They're designed to be easy to get at a glance;
  // here, you're expecting `result` to be 3.
  expect(result).toBe(3);
});

Unit-Tests

Unit-Tests werden von Softwareentwicklern geschrieben und ausgeführt, um sicherzustellen, dass ein Abschnitt einer Anwendung (bekannt als ?Einheit“) seinem Design entspricht und sich wie vorgesehen verh?lt.

Wir m?chten unseren Code isoliert testen, die tats?chliche Implementierung etwaiger Abh?ngigkeiten ist uns egal.
Wir m?chten

verifizieren
  • dass unsere Codeeinheit wie erwartet funktioniert
  • gibt die erwarteten Ergebnisse zurück
  • ruft alle Mitarbeiter (Abh?ngigkeiten) auf, wie es sollte

Und hier kommt die Verspottung unserer Abh?ngigkeiten ins Spiel.

Verspottung

Bei Unit-Tests bieten uns Mocks die F?higkeit, die von einer Abh?ngigkeit bereitgestellte Funktionalit?t zu unterdrücken und eine M?glichkeit, zu beobachten, wie unser Code mit der Abh?ngigkeit interagiert.

Mocks sind besonders nützlich, wenn es teuer oder unpraktisch ist, eine Abh?ngigkeit direkt in unsere Tests einzubeziehen, beispielsweise in F?llen, in denen Ihr Code HTTP-Aufrufe an eine API durchführt oder mit der Datenbankschicht interagiert.

Es ist vorzuziehen, die Antworten für diese Abh?ngigkeiten auszublenden und gleichzeitig sicherzustellen, dass sie nach Bedarf aufgerufen werden. Hier kommen Mocks zum Einsatz.

Durch die Verwendung von Scheinfunktionen k?nnen wir Folgendes wissen:

  • Die Anzahl der eingegangenen Anrufe.
  • ArgumentWerte, die bei jedem Aufruf verwendet werden.
  • Der ?Kontext“ oder dieser Wert bei jedem Aufruf.
  • Wie die Funktion beendet wurde und welche Werte erzeugt wurden.

Spott im Scherz

Es gibt mehrere M?glichkeiten, Scheinfunktionen zu erstellen.

  • Mit der Methode jest.fn k?nnen wir direkt eine neue Scheinfunktion erstellen.
  • Wenn Sie eine Objektmethode verspotten, k?nnen Sie jest.spyOn verwenden.
  • Und wenn Sie ein ganzes Modul verspotten m?chten, k?nnen Sie jest.mock verwenden.

Die jest.fn-Methode ist für sich genommen eine Funktion h?herer Ordnung.

Es handelt sich um eine Factory-Methode, die neue, ungenutzte Scheinfunktionen erstellt.

Funktionen in JavaScript sind erstklassige Bürger, sie k?nnen als Argumente weitergegeben werden.

Jede Scheinfunktion hat einige besondere Eigenschaften. Die Mock-Eigenschaft ist von grundlegender Bedeutung. Bei dieser Eigenschaft handelt es sich um ein Objekt, das alle Scheinstatusinformationen darüber enth?lt, wie die Funktion aufgerufen wurde. Dieses Objekt enth?lt drei Array-Eigenschaften:

  • Anrufe [Argumente jedes Anrufs]
  • Instanzen ['dieser' Wert bei jedem Aufruf]
  • Ergebnisse [der Wert, den die Funktion beendet hat], die Ergebnisseigenschaft hat einen Typ (Rückgabe oder Wurf) und einen Wert
    • Die Funktion gibt explizit einen Wert zurück.
    • Die Funktion wird ohne Return-Anweisung vollst?ndig ausgeführt (was der Rückgabe von undefiniert entspricht
    • ).
    • Die Funktion gibt einen Fehler aus.
export default function sum(a, n) {
  return a + b;
}
  • https://codesandbox.io/s/implementing-mock-functions-tkc8b

Schein-Basic

import sum from './sum';

// Describe the test and wrap it in a function.
it('adds 1 + 2 to equal 3', () => {
  const result = sum(1, 2);

  // Jest uses matchers, like pretty much any other JavaScript testing framework.
  // They're designed to be easy to get at a glance;
  // here, you're expecting `result` to be 3.
  expect(result).toBe(3);
});

Verspottung injizierter Abh?ngigkeiten

import { name, draw, reportArea, reportPerimeter } from './modules/square.js';

Spottmodule

Verspotten Sie eine Funktion mit jest.fn

// Constructor Injection

// DatabaseManager class takes a database connector as a dependency
class DatabaseManager {
    constructor(databaseConnector) {
        // Dependency injection of the database connector
        this.databaseConnector = databaseConnector;
    }

    updateRow(rowId, data) {
        // Use the injected database connector to perform the update
        this.databaseConnector.update(rowId, data);
    }
}

// parameter injection, takes a database connector instance in as an argument; easy to test!
function updateRow(rowId, data, databaseConnector) {
    databaseConnector.update(rowId, data);
}

Diese Art der Verspottung kommt aus mehreren Gründen seltener vor:

  • jest.mock erledigt dies automatisch für alle Funktionen in einem Modul
  • jest.spyOn macht das Gleiche, erm?glicht aber die Wiederherstellung der ursprünglichen Funktion

Verspotten Sie ein Modul mit jest.mock

Ein h?ufigerer Ansatz ist die Verwendung von jest.mock um alle Exporte eines Moduls automatisch auf die Mock-Funktion festzulegen.

// 1. The mock function factory
function fn(impl = () => {}) {
  // 2. The mock function
  const mockFn = function(...args) {
    // 4. Store the arguments used
    mockFn.mock.calls.push(args);
    mockFn.mock.instances.push(this);
    try {
      const value = impl.apply(this, args); // call impl, passing the right this
      mockFn.mock.results.push({ type: 'return', value });
      return value; // return the value
    } catch (value) {
      mockFn.mock.results.push({ type: 'throw', value });
      throw value; // re-throw the error
    }
  }
  // 3. Mock state
  mockFn.mock = { calls: [], instances: [], results: [] };
  return mockFn;
}

Spionieren oder verspotten Sie eine Funktion mit jest.spyOn

Manchmal m?chten Sie nur zusehen, wie eine Methode aufgerufen wird, aber die ursprüngliche Implementierung beibehalten. In anderen F?llen m?chten Sie m?glicherweise die Implementierung nachahmen, das Original jedoch sp?ter in der Suite wiederherstellen.

test("returns undefined by default", () => {
  const mock = jest.fn();

  let result = mock("foo");

  expect(result).toBeUndefined();
  expect(mock).toHaveBeenCalled();
  expect(mock).toHaveBeenCalledTimes(1);
  expect(mock).toHaveBeenCalledWith("foo");
});

Stellen Sie die ursprüngliche Implementierung wieder her

const doAdd = (a, b, callback) => {
  callback(a + b);
};

test("calls callback with arguments added", () => {
  const mockCallback = jest.fn();
  doAdd(1, 2, mockCallback);
  expect(mockCallback).toHaveBeenCalledWith(3);
});

Javascript und die Ereignisschleife

JavaScript ist Single-Threaded:Es kann immer nur eine Aufgabe gleichzeitig ausgeführt werden. Normalerweise ist das keine gro?e Sache, aber jetzt stellen Sie sich vor, Sie führen eine Aufgabe aus, die 30 Sekunden dauert. Ja. W?hrend dieser Aufgabe warten wir 30 Sekunden, bevor etwas anderes passieren kann (JavaScript wird standardm??ig im Hauptthread des Browsers ausgeführt. daher bleibt die gesamte Benutzeroberfl?che h?ngen).
Wir schreiben das Jahr 2020, niemand m?chte eine langsame, nicht reagierende Website.

Glücklicherweise bietet uns der Browser einige Funktionen, die die JavaScript-Engine selbst nicht bietet: eine Web-API. Dazu geh?ren die DOM-API, setTimeout, HTTP-Anfragen und so weiter. Dies kann uns helfen, ein gewisses asynchrones, nicht blockierendes Verhalten
zu schaffen

export default function sum(a, n) {
  return a + b;
}
  • Call Stack – Wenn wir eine Funktion aufrufen, wird sie zu etwas hinzugefügt, das Call Stack genannt wird.
  • WebAPI – setTimeout wird von der WebAPI bereitgestellt, übernimmt eine Rückruffunktion und richtet einen Timer ein, ohne den Hauptthread zu blockieren
  • Warteschlange – wenn der Timer abgelaufen ist, wird der Rückruf zur Warteschlange hinzugefügt
  • Ereignisschleife – prüft, ob der Aufrufstapel leer ist, prüft, ob in der Warteschlange auszuführende Rückrufe vorhanden sind, und wechselt zum auszuführenden Aufrufstapel
import sum from './sum';

// Describe the test and wrap it in a function.
it('adds 1 + 2 to equal 3', () => {
  const result = sum(1, 2);

  // Jest uses matchers, like pretty much any other JavaScript testing framework.
  // They're designed to be easy to get at a glance;
  // here, you're expecting `result` to be 3.
  expect(result).toBe(3);
});

Testen von asynchronem Code mit Jest

Jest geht normalerweise davon aus, dass die Funktionen der Tests synchron ausgeführt werden.

Wenn wir einen asynchronen Vorgang durchführen, Jest aber nicht mitteilen, dass er auf das Ende des Tests warten soll, wird ein falsch positives Ergebnis ausgegeben.

import { name, draw, reportArea, reportPerimeter } from './modules/square.js';

Asynchrone Muster
Es gibt verschiedene Muster für die Handhabung asynchroner Vorg?nge in JavaScript. Die am h?ufigsten verwendeten sind:

  • Rückrufe
  • Versprechen & Async/Warten

Rückrufe testen

Sie k?nnen keinen Test in einem Rückruf haben, da Jest ihn nicht ausführt – die Ausführung der Testdatei endet, bevor der Rückruf aufgerufen wird. Um dies zu beheben, übergeben Sie einen Parameter an die Testfunktion, den Sie bequem als erledigt aufrufen k?nnen. Jest wartet, bis Sie done() aufrufen, bevor es den Test beendet:

// Constructor Injection

// DatabaseManager class takes a database connector as a dependency
class DatabaseManager {
    constructor(databaseConnector) {
        // Dependency injection of the database connector
        this.databaseConnector = databaseConnector;
    }

    updateRow(rowId, data) {
        // Use the injected database connector to perform the update
        this.databaseConnector.update(rowId, data);
    }
}

// parameter injection, takes a database connector instance in as an argument; easy to test!
function updateRow(rowId, data, databaseConnector) {
    databaseConnector.update(rowId, data);
}

Versprechen

Bei Funktionen, die Versprechen zurückgeben, geben wir ein Versprechen aus dem Test zurück:

// 1. The mock function factory
function fn(impl = () => {}) {
  // 2. The mock function
  const mockFn = function(...args) {
    // 4. Store the arguments used
    mockFn.mock.calls.push(args);
    mockFn.mock.instances.push(this);
    try {
      const value = impl.apply(this, args); // call impl, passing the right this
      mockFn.mock.results.push({ type: 'return', value });
      return value; // return the value
    } catch (value) {
      mockFn.mock.results.push({ type: 'throw', value });
      throw value; // re-throw the error
    }
  }
  // 3. Mock state
  mockFn.mock = { calls: [], instances: [], results: [] };
  return mockFn;
}

Asynchron/warten

Um Funktionen zu testen, die Versprechen zurückgeben, k?nnen wir auch async/await verwenden, was die Syntax sehr unkompliziert und einfach macht:

test("returns undefined by default", () => {
  const mock = jest.fn();

  let result = mock("foo");

  expect(result).toBeUndefined();
  expect(mock).toHaveBeenCalled();
  expect(mock).toHaveBeenCalledTimes(1);
  expect(mock).toHaveBeenCalledWith("foo");
});

Tipps

  • Wir müssen ein gutes Verst?ndnis dafür haben, was unsere Funktion tut und was wir testen werden
  • Denken Sie über das Verhalten des Codes nach, den wir testen
  • Bereiten Sie die Bühne:
    • Abh?ngigkeiten nachahmen/ausspionieren
    • Interagiert unser Code mit globalen Objekten? wir k?nnen sie auch verspotten/ausspionieren
    • Interagieren unsere Tests mit dem DOM? Wir k?nnen einige gef?lschte Elemente erstellen, mit denen wir arbeiten k?nnen
    • Strukturieren Sie Ihre Tests
    • Gegeben ...
    • Wenn ich anrufe ....
    • Dann ... erwarte ich .....
const doAdd = (a, b, callback) => {
  callback(a + b);
};

test("calls callback with arguments added", () => {
  const mockCallback = jest.fn();
  doAdd(1, 2, mockCallback);
  expect(mockCallback).toHaveBeenCalledWith(3);
});

Links

  • https://medium.com/@rickhanlonii/understanding-jest-mocks-f0046c68e53c
  • https://jestjs.io/docs/en/mock-functions
  • https://codesandbox.io/s/implementing-mock-functions-tkc8b
  • https://github.com/BulbEnergy/jest-mock-examples
  • https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif
  • https://jestjs.io/docs/en/asynchronous
  • https://www.pluralsight.com/guides/test-asynchronous-code-jest

Das obige ist der detaillierte Inhalt vonEinführung in Jest: Unit-Tests, Mocking und asynchroner Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276
Wie stelle ich eine HTTP -Anforderung in node.js? Wie stelle ich eine HTTP -Anforderung in node.js? Jul 13, 2025 am 02:18 AM

Es gibt drei g?ngige M?glichkeiten, HTTP-Anforderungen in Node.js zu initiieren: Verwenden Sie integrierte Module, Axios und Knotenfetch. 1. Verwenden Sie das integrierte HTTP/HTTPS-Modul ohne Abh?ngigkeiten, das für grundlegende Szenarien geeignet ist, jedoch eine manuelle Verarbeitung von Datengen?hten und Fehlerüberwachung erfordert, z. 2.Axios ist eine auf Versprechen basierende Bibliothek von Drittanbietern. Es verfügt über eine kurze Syntax und leistungsstarke Funktionen, unterstützt Async/Auseait, automatische JSON -Konvertierung, Interceptor usw. Es wird empfohlen, asynchrone Anforderungsvorg?nge zu vereinfachen. 3.Node-Fetch bietet einen Stil ?hnlich dem Browser-Abruf, basierend auf Versprechen und einfacher Syntax

JavaScript -Datentypen: Primitive VS -Referenz JavaScript -Datentypen: Primitive VS -Referenz Jul 13, 2025 am 02:43 AM

JavaScript -Datentypen sind in primitive Typen und Referenztypen unterteilt. Zu den primitiven Typen geh?ren String, Anzahl, Boolesche, Null, undefiniertes und Symbol. Die Werte sind unver?nderlich und Kopien werden bei der Zuweisung von Werten kopiert, sodass sie sich nicht gegenseitig beeinflussen. Referenztypen wie Objekte, Arrays und Funktionen speichern Speicheradressen, und Variablen, die auf dasselbe Objekt zeigen, wirkt sich gegenseitig aus. Typeof und Instanz k?nnen verwendet werden, um die Typen zu bestimmen, aber auf die historischen Probleme der TypeOfnull zu achten. Das Verst?ndnis dieser beiden Arten von Unterschieden kann dazu beitragen, einen stabileren und zuverl?ssigeren Code zu schreiben.

JavaScript Time Object, jemand erstellt eine EACTEXE, schnellere Website auf Google Chrome usw. JavaScript Time Object, jemand erstellt eine EACTEXE, schnellere Website auf Google Chrome usw. Jul 08, 2025 pm 02:27 PM

Hallo, JavaScript -Entwickler! Willkommen in den JavaScript -Nachrichten dieser Woche! Diese Woche konzentrieren wir uns auf: Oracas Markenstreit mit Deno, neue JavaScript -Zeitobjekte werden von Browsern, Google Chrome -Updates und einigen leistungsstarken Entwickler -Tools unterstützt. Fangen wir an! Der Markenstreit von Oracle mit dem Versuch von Deno Oracle, ein "JavaScript" -Marke zu registrieren, hat Kontroversen verursacht. Ryan Dahl, der Sch?pfer von Node.js und Deno, hat eine Petition zur Absage der Marke eingereicht, und er glaubt, dass JavaScript ein offener Standard ist und nicht von Oracle verwendet werden sollte

Handlingversprechen: Verkettung, Fehlerbehandlung und Versprechenkombinatoren in JavaScript Handlingversprechen: Verkettung, Fehlerbehandlung und Versprechenkombinatoren in JavaScript Jul 08, 2025 am 02:40 AM

Versprechen ist der Kernmechanismus für den Umgang mit asynchronen Operationen in JavaScript. Das Verst?ndnis von Kettenanrufen, Fehlerbehebung und Kombination ist der Schlüssel zum Beherrschen ihrer Anwendungen. 1. Der Kettenaufruf gibt ein neues Versprechen durch .then () zurück, um asynchrone Prozessverkampferung zu realisieren. Jeder. Dann () erh?lt das vorherige Ergebnis und kann einen Wert oder ein Versprechen zurückgeben; 2. Die Fehlerbehandlung sollte .Catch () verwenden, um Ausnahmen zu fangen, um stille Ausf?lle zu vermeiden, und den Standardwert im Fang zurückgeben, um den Prozess fortzusetzen. 3. Combinatoren wie Promise.All () (erfolgreich erfolgreich erfolgreich nach allen Erfolg), Versprechen.Race () (Die erste Fertigstellung wird zurückgegeben) und Versprechen.Allsettled () (Warten auf alle Fertigstellungen)

Was ist die Cache -API und wie wird sie bei Dienstangestellten verwendet? Was ist die Cache -API und wie wird sie bei Dienstangestellten verwendet? Jul 08, 2025 am 02:43 AM

Cacheapi ist ein Tool, das der Browser zur Cache -Netzwerkanfragen bereitstellt, das h?ufig in Verbindung mit dem Servicearbeiter verwendet wird, um die Leistung der Website und die Offline -Erfahrung zu verbessern. 1. Es erm?glicht Entwicklern, Ressourcen wie Skripte, Stilbl?tter, Bilder usw. Zu speichern; 2. Es kann die Cache -Antworten entsprechend den Anfragen übereinstimmen. 3. Es unterstützt das L?schen bestimmter Caches oder das L?schen des gesamten Cache. 4.. Es kann Cache -Priorit?ts- oder Netzwerkpriorit?tsstrategien durch Servicearbeiter implementieren, die sich auf Fetch -Ereignisse anh?ren. 5. Es wird h?ufig für die Offline -Unterstützung verwendet, die wiederholte Zugriffsgeschwindigkeit, die Vorspannungs -Schlüsselressourcen und den Inhalt des Hintergrundaktualisierungss beschleunigen. 6. Wenn Sie es verwenden, müssen Sie auf die Cache -Versionskontrolle, Speicherbeschr?nkungen und den Unterschied zum HTTP -Caching -Mechanismus achten.

JS Roundup: Ein tiefes Eintauchen in die JavaScript -Ereignisschleife JS Roundup: Ein tiefes Eintauchen in die JavaScript -Ereignisschleife Jul 08, 2025 am 02:24 AM

Die Ereignisschleife von JavaScript verwaltet asynchrone Vorg?nge, indem sie Call -Stapel, Webapis und Task -Warteschlangen koordinieren. 1. Der Anrufstack führt synchronen Code aus, und wenn er auf asynchrone Aufgaben begegnet, wird er zur Verarbeitung an Webapi übergeben. 2. Nachdem das Webapi die Aufgabe im Hintergrund abgeschlossen hat, wird der Rückruf in die entsprechende Warteschlange (Makroaufgabe oder Micro -Aufgabe) eingebaut. 3. Die Ereignisschleife prüft, ob der Anrufstapel leer ist. Wenn es leer ist, wird der Rückruf aus der Warteschlange herausgenommen und zur Ausführung in den Anrufstapel geschoben. V. 5. Das Verst?ndnis der Ereignisschleife hilft zu vermeiden, den Haupt -Thread zu blockieren und die Codeausführungsreihenfolge zu optimieren.

Ereignis verstehen und in JavaScript DOM -Ereignissen sprudeln und erfassen Ereignis verstehen und in JavaScript DOM -Ereignissen sprudeln und erfassen Jul 08, 2025 am 02:36 AM

Ereignisblasen verbreiten sich vom Zielelement nach au?en zum Vorfahrknoten aus, w?hrend Ereignisfassungen sich von der ?u?eren Schicht nach innen zum Zielelement ausbreiten. 1. Ereignisblasen: Nach dem Klicken auf das untergeordnete Element l?st das Ereignis den H?rer des übergeordneten Elements nach oben aus. Nach dem Klicken auf die Schaltfl?che gibt es beispielsweise zuerst die untergeordnete und dann entzündete Eltern aus. 2. Ereigniserfassung: Stellen Sie den dritten Parameter auf True ein, so dass der H?rer in der Erfassungsstufe ausgeführt wird, z. B. das Ausl?sen des Capture -Listeners des übergeordneten Elements, bevor Sie auf die Schaltfl?che klicken. 3. Praktische Verwendungszwecke umfassen ein einheitliches Management von Ereignissen für Kinderelemente, Vorverarbeitung und Leistungsoptimierung von Abfangen. V.

Eine JS-Zusammenfassung von Funktionen h?herer Ordnung jenseits der Karte und des Filters Eine JS-Zusammenfassung von Funktionen h?herer Ordnung jenseits der Karte und des Filters Jul 10, 2025 am 11:41 AM

In JavaScript -Arrays gibt es zus?tzlich zu MAP und Filter andere leistungsstarke und selten verwendete Methoden. 1. Reduzierung kann nicht nur summieren, sondern auch z?hlen, gruppen, flach Arrays ab und bauen neue Strukturen auf. 2. FindingIndex werden verwendet, um einzelne Elemente oder Indizes zu finden. 3. Einige und alles werden verwendet, um festzustellen, ob Bedingungen bestehen oder sich alle treffen. 4. SORT kann sortiert werden, wechselt aber das ursprüngliche Array. 5. Achten Sie darauf, das Array zu kopieren, wenn Sie es verwenden, um Nebenwirkungen zu vermeiden. Diese Methoden machen den Code pr?gnanter und effizienter.

See all articles