亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Inhaltsverzeichnis
Bitte hinterlassen Sie ein Feedback <3
Heim Web-Frontend js-Tutorial Schnelle Optimierung Ihrer ReactJS-Anwendung hinsichtlich Leistung und Gr??e

Schnelle Optimierung Ihrer ReactJS-Anwendung hinsichtlich Leistung und Gr??e

Dec 10, 2024 pm 08:13 PM

React wird in gro?em Umfang für Frontend-intensive Anwendungen eingesetzt und bietet einzigartige M?glichkeiten zur Leistungs- und Gr??enoptimierung. Die Verbesserung beider wird einen erheblichen messbaren Einfluss auf die Gr??e des React-Paketpakets haben. Je kleiner die Bundle-Gr??e, desto schneller die Ladezeit, wenn man bedenkt, dass wir uns auf vom Client gerenderte Anwendungen konzentrieren.

Serverseitiges Rendering würde die Ladezeit weiter verbessern. Beim serverseitigen Rendering werden die React-Komponenten als HTML-Code auf dem Server selbst gerendert, wenn ein Benutzer eine Webseite anfordert. Anschlie?end wird diese vorgerenderte Seite an den Browser gesendet, sodass der Benutzer die Seite sofort sehen kann, ohne den Mehraufwand der JS-Ladezeit.

Aber das ist eine ganz andere Geschichte. Konzentrieren wir uns haupts?chlich auf den Versuch, unsere clientseitig gerenderte Website zu verbessern, indem wir an der Verbesserung der Paketpaketgr??e arbeiten, indem wir ?nderungen am Code vornehmen. Lass uns tief eintauchen.

1. Codeaufteilung und dynamische Importe

?Bündelung“ von React-Code ist der Prozess, bei dem alle Importe und Codes verfolgt und in einer einzigen Datei namens ?Bundle“ zusammengefasst werden. Webpack, Browserify usw. erledigen dies bereits für uns.

Webpack verfügt über eine Funktion namens ?Code Splitting“, die dafür verantwortlich ist, ein einzelnes Bundle in kleinere Teile aufzuteilen, die Teile zu deduplizieren und sie ?bei Bedarf“ zu importieren. Dies wirkt sich erheblich auf die Ladezeit der Anwendung aus.

module.exports = {
  // Other webpack configuration options...
  optimization: {
    splitChunks: {
      chunks: 'all', // Options: 'initial', 'async', 'all'
      minSize: 10000, // Minimum size, in bytes, for a chunk to be generated
      maxSize: 0, // Maximum size, in bytes, for a chunk to be generated
      minChunks: 1, // Minimum number of chunks that must share a module before splitting
      maxAsyncRequests: 30, // Maximum number of parallel requests when on-demand loading
      maxInitialRequests: 30, // Maximum number of parallel requests at an entry point
      automaticNameDelimiter: '~', // Delimiter for generated names
      cacheGroups: {
        defaultVendors: {
          test: /[\/]node_modules[\/]/,
          priority: -10,
          reuseExistingChunk: true,
        },
        default: {
          minChunks: 2,
          priority: -20,
          reuseExistingChunk: true,
        },
      },
    },
  },
};

Lazy Loading Components with React Suspense (React 18): In Kombination mit dynamischen Importen führt dies zu einer sichtbaren Verbesserung der Komponentenladezeit.

Wenn wir untergeordnete Komponenten innerhalb einer übergeordneten Komponente importieren, importieren wir diese im Allgemeinen statisch. Um den Import dieser Komponente zu verhindern, bis wir sie tats?chlich rendern müssen, k?nnen wir eine Kombination aus dynamischen Importen mit React Suspense verwenden. React Suspense erm?glicht das Laden einer Komponente bei Bedarf. Es zeigt eine Fallback-Benutzeroberfl?che, w?hrend die entsprechenden Komponenten dynamisch importiert und dann gerendert werden.

import { lazy } from 'react';

// The lazy loaded Component has to be exported as default
const BlogSection = lazy(() => import('./BlogSection.tsx'));

export default function HomePage() {
  return (
    <>
      <Suspense fallback={<Loading />}>
        <BlogSection />
      </Suspense>
    </>
  );
}

function Loading() {
  return <h2>Component is Loading...</h2>;
}

2. Baumschütteln

Dies ist eine Technik, die von JavaScript-Bundlern verwendet wird, um den gesamten nicht verwendeten Code zu entfernen, bevor Bundles erstellt werden. ES6-Code kann durcheinander gebracht werden; Code, der auf CommonJS basiert (d. h. ?require“ verwendet), kann jedoch nicht im Tree-Shake-Modus ausgeführt werden.

Webpack Bundle Analyzer ist ein Plugin, das Ihnen hilft, die Gr??e eines Webpacks mit einer interaktiven Karte zu visualisieren.

npm install --save-dev webpack-bundle-analyzer
npm install -g source-map-explorer

Konfigurieren Sie dann Ihr Webpack, um das Obige als Plugin hinzuzufügen:

plugins: [
  new BundleAnalyzerPlugin(),
  new HtmlWebpackPlugin({
    template: './public/index.html', // Path to your HTML template
    filename: 'index.html', // Output HTML file name
    inject: true, // Inject all assets into the body
  }),
];

Stellen Sie sicher, dass Ihr Skript für die Ausführung von Webpack konfiguriert ist:

"build": "webpack --config webpack.config.js --mode production"

Führen Sie ?garn build“ aus, um eine report.html zu generieren, die Ihnen dabei hilft, Ihre Bündelgr??e effektiv zu visualisieren.

Es wird ungef?hr so ??aussehen:

Quick Optimization for your ReactJS Application for Performance and Size

3. Gleichzeitiges Rendern

Beginnen wir damit, zu verstehen, was Blocking Rendering ist. Beim Blockieren des Renderings wird der Hauptthread (UX-Updates) blockiert, weil React einige weniger wichtige Aufgaben im Hintergrund ausgeführt hat. Dies war bis React 16 der Fall.

React 18 hat gleichzeitige Funktionen eingeführt, was bedeutet, dass es Folgendes tun wird:

  • Gibt Ihnen mehr Kontrolle darüber, wie Hintergrundaktualisierungen geplant werden, und sorgt für ein reibungsloses Endbenutzererlebnis, indem der Hauptthread nicht blockiert wird.
  • Automatisches Stapeln von Statusaktualisierungen initiieren: Beim Stapeln handelt es sich um das Gruppieren mehrerer erneuter Renderings aufgrund mehrerer Statusaktualisierungen, sodass der Status nur einmal aktualisiert wird.

Verwenden Sie den Hook startTransition(), um React-Aktualisierungen als nicht dringend zu verwalten, und helfen Sie React dabei, dringende Aktualisierungen wie Benutzereingaben und Benutzerinteraktionen mit Komponenten gegenüber den vorherigen zu priorisieren.

module.exports = {
  // Other webpack configuration options...
  optimization: {
    splitChunks: {
      chunks: 'all', // Options: 'initial', 'async', 'all'
      minSize: 10000, // Minimum size, in bytes, for a chunk to be generated
      maxSize: 0, // Maximum size, in bytes, for a chunk to be generated
      minChunks: 1, // Minimum number of chunks that must share a module before splitting
      maxAsyncRequests: 30, // Maximum number of parallel requests when on-demand loading
      maxInitialRequests: 30, // Maximum number of parallel requests at an entry point
      automaticNameDelimiter: '~', // Delimiter for generated names
      cacheGroups: {
        defaultVendors: {
          test: /[\/]node_modules[\/]/,
          priority: -10,
          reuseExistingChunk: true,
        },
        default: {
          minChunks: 2,
          priority: -20,
          reuseExistingChunk: true,
        },
      },
    },
  },
};

In diesem Beispiel wird die handleChange-Funktion aufgerufen, wenn sich der Eingabewert ?ndert. Die startTransition-Funktion wird verwendet, um die Aktualisierung des Listenstatus als nicht dringend zu markieren. Dadurch kann React die Aktualisierung des Wertstatus priorisieren und sicherstellen, dass die Eingabe auch dann reagiert, wenn die Liste gro? ist.

Verwenden Sie den useDeferredValue-Hook, um einen Wert (normalerweise eine teure Berechnung) zu verschieben, bis die Benutzeroberfl?che weniger ausgelastet ist.

import { lazy } from 'react';

// The lazy loaded Component has to be exported as default
const BlogSection = lazy(() => import('./BlogSection.tsx'));

export default function HomePage() {
  return (
    <>
      <Suspense fallback={<Loading />}>
        <BlogSection />
      </Suspense>
    </>
  );
}

function Loading() {
  return <h2>Component is Loading...</h2>;
}

In diesem Beispiel wird der Hook ?useDeferredValue“ verwendet, um den Wertstatus zu verschieben, bis die Benutzeroberfl?che weniger ausgelastet ist. Dies tr?gt dazu bei, dass die Eingabe reaktionsf?hig bleibt, indem das Rendern der gro?en Liste verschoben wird, bis die Eingabeaktualisierung verarbeitet wurde.

Hauptvorteile des gleichzeitigen Renderns:

  • Verbesserte Reaktionsf?higkeit: Indem React die Renderarbeit unterbrechen kann, reagiert die Benutzeroberfl?che weiterhin auf Benutzerinteraktionen.
  • Priorisierung: React kann dringende Updates gegenüber nicht dringenden priorisieren und so ein reibungsloseres Benutzererlebnis gew?hrleisten.
  • Bessere Leistung: Teure Updates k?nnen verschoben werden, wodurch die Auswirkungen auf den Hauptthread verringert und die Gesamtleistung der App verbessert werden.

4. Unterstützen Sie das Vorladen von Ressourcen (React 19)

Wenn Sie wissen, dass Ihre Anwendung beim Laden gro?e Ressourcen abruft, w?re es eine gute Idee, die Ressource vorab zu laden. Diese Ressourcen k?nnen Schriftarten, Bilder, Stylesheets usw. sein.

Szenarien, in denen ein Vorladen von Vorteil w?re:

  • Eine untergeordnete Komponente würde eine Ressource verwenden. In diesem Fall k?nnen Sie es w?hrend der Renderphase der übergeordneten Komponente vorab laden.
  • Laden Sie es vorab in einen Event-Handler, der zu einer Seite/Komponente weiterleitet, die diese Ressource verwenden würde. Dies ist tats?chlich eine bessere Option, als es w?hrend des Renderns vorab zu laden.
module.exports = {
  // Other webpack configuration options...
  optimization: {
    splitChunks: {
      chunks: 'all', // Options: 'initial', 'async', 'all'
      minSize: 10000, // Minimum size, in bytes, for a chunk to be generated
      maxSize: 0, // Maximum size, in bytes, for a chunk to be generated
      minChunks: 1, // Minimum number of chunks that must share a module before splitting
      maxAsyncRequests: 30, // Maximum number of parallel requests when on-demand loading
      maxInitialRequests: 30, // Maximum number of parallel requests at an entry point
      automaticNameDelimiter: '~', // Delimiter for generated names
      cacheGroups: {
        defaultVendors: {
          test: /[\/]node_modules[\/]/,
          priority: -10,
          reuseExistingChunk: true,
        },
        default: {
          minChunks: 2,
          priority: -20,
          reuseExistingChunk: true,
        },
      },
    },
  },
};

Interessante Tatsache: Nach der Implementierung des Vorladens verzeichneten viele Websites, darunter Shopify, Financial Times und Treebo, 1-Sekunden-Verbesserungen bei benutzerzentrierten Kennzahlen wie der Zeit bis zur Interaktion und der vom Benutzer wahrgenommenen Latenz.


Quick Optimization for your ReactJS Application for Performance and Size

Bitte hinterlassen Sie ein Feedback <3

Ich hoffe, Sie fanden diesen Blog hilfreich! Ihr Feedback ist für mich von unsch?tzbarem Wert , hinterlassen Sie also bitte Ihre Gedanken und Vorschl?ge in den Kommentaren unten.

Vernetzen Sie sich gerne mit mir auf LinkedIn, um weitere Einblicke und Updates zu erhalten. Bleiben wir in Verbindung und lernen und wachsen wir gemeinsam weiter!

Das obige ist der detaillierte Inhalt vonSchnelle Optimierung Ihrer ReactJS-Anwendung hinsichtlich Leistung und Gr??e. 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
1488
72
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.

React vs Angular vs Vue: Welches JS -Framework ist am besten? React vs Angular vs Vue: Welches JS -Framework ist am besten? Jul 05, 2025 am 02:24 AM

Welches JavaScript -Framework ist die beste Wahl? Die Antwort besteht darin, die am besten geeigneten nach Ihren Bedürfnissen zu w?hlen. 1.React ist flexibel und kostenlos und für mittlere und gro?e Projekte geeignet, für die hohe Anpassungs- und Teamarchitekturf?higkeiten erforderlich sind. 2. Angular bietet vollst?ndige L?sungen, die für Anwendungen auf Unternehmensebene und langfristige Wartung geeignet sind. 3.. Vue ist einfach zu bedienen, geeignet für kleine und mittlere Projekte oder schnelle Entwicklung. Unabh?ngig davon, ob es einen technologischen Stack, die Teamgr??e, der Projektlebenszyklus gibt und ob SSR erforderlich ist, sind auch wichtige Faktoren für die Auswahl eines Rahmens. Kurz gesagt, es gibt keinen absolut besten Rahmen, die beste Wahl ist die, die Ihren Bedürfnissen entspricht.

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.

Nutzung von Array.Prototyp -Methoden zur Datenmanipulation in JavaScript Nutzung von Array.Prototyp -Methoden zur Datenmanipulation in JavaScript Jul 06, 2025 am 02:36 AM

JavaScript-Array-integrierte Methoden wie .Map (), .filter () und .Reduce () k?nnen die Datenverarbeitung vereinfachen. 1) .Map () wird verwendet, um Elemente eins in eins um Neuarrays zu konvertieren; 2) .Filter () wird verwendet, um Elemente durch Bedingung zu filtern; 3) .Reduce () wird verwendet, um Daten als einzelner Wert zu aggregieren; Missbrauch sollte bei der Verwendung vermieden werden, was zu Nebenwirkungen oder Leistungsproblemen führt.

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.

See all articles