ReactJS Best Practices: Sauberen und wartbaren Code schreiben
Nov 16, 2024 pm 07:55 PMReactJS ist eine leistungsstarke und beliebte JavaScript-Bibliothek zum Erstellen dynamischer Benutzeroberfl?chen. Wenn Ihre Anwendung jedoch w?chst, ist es wichtig, sauberen und organisierten Code beizubehalten, um ihn skalierbar, effizient und lesbar zu halten. Hier sind einige Best Practices, die Ihnen helfen, sauberen, wartbaren React-Code zu schreiben.
- Organisieren Sie Ihre Projektstruktur Durch die Einrichtung einer klaren Ordnerstruktur k?nnen Sie und Ihr Team Dateien leichter finden. Eine gemeinsame Struktur folgt einem ?featurebasierten“ Ansatz, bei dem jedes Feature seinen eigenen Ordner hat:
src/ ├── components/ │ └── Button/ │ ├── Button.js │ ├── Button.css │ └── index.js ├── pages/ │ └── Home.js └── App.js
Durch die Trennung von Komponenten nach Funktion (oder Verantwortung) kann die Codebasis modularer und einfacher zu navigieren sein, wenn sie w?chst.
- Verwenden Sie funktionale Komponenten und Haken React Hooks haben in vielen F?llen Klassenkomponenten ersetzt und vereinfachen den Code, indem sie diese Bindungen vermeiden. Funktionskomponenten sind im Allgemeinen kürzer, besser lesbar und einfacher zu testen.
Beispiel:
// Instead of class component: class MyComponent extends React.Component { state = { count: 0 }; increment = () => { this.setState({ count: this.state.count + 1 }); }; render() { return <button onClick={this.increment}>{this.state.count}</button>; } } // Use functional component with hooks: import React, { useState } from 'react'; function MyComponent() { const [count, setCount] = useState(0); return <button onClick={() => setCount(count + 1)}>{count}</button>; }
Komponenten aufschlüsseln
Gro?e Komponenten sind schwer zu warten und wiederzuverwenden. Versuchen Sie, kleine, fokussierte Komponenten zu erstellen, die jeweils eine einzelne Aufgabe übernehmen. Wenn eine Komponente mehrere Aufgaben erfüllt, sollten Sie sie in kleinere Unterkomponenten aufteilen.Verwenden Sie PropTypes oder TypeScript
Die PropTypes von React oder die statische Typisierung von TypeScript k?nnen dabei helfen, Typfehler frühzeitig zu erkennen. Durch die Definition erwarteter Requisitentypen werden Komponenten vorhersehbarer und weniger fehleranf?llig.
Beispiel mit PropTypes:
import PropTypes from 'prop-types'; function Greeting({ name }) { return <h1>Hello, {name}</h1>; } Greeting.propTypes = { name: PropTypes.string.isRequired, };
Beispiel mit TypeScript:
type GreetingProps = { name: string; }; const Greeting: React.FC<GreetingProps> = ({ name }) => { return <h1>Hello, {name}</h1>; };
- Halten Sie die Komponentenlogik von der Benutzeroberfl?che getrennt Um den Code sauber und testbar zu halten, trennen Sie die Logik von der Pr?sentation. Verwenden Sie beispielsweise benutzerdefinierte Hooks, um die Logik zu verwalten und den Status zu verwalten, und übergeben Sie dann Daten als Requisiten an Komponenten, die die Benutzeroberfl?che verwalten.
Beispiel für einen benutzerdefinierten Haken:
import { useState, useEffect } from 'react'; function useFetchData(url) { const [data, setData] = useState(null); useEffect(() => { fetch(url) .then(response => response.json()) .then(data => setData(data)); }, [url]); return data; } // UI Component: function DataDisplay({ url }) { const data = useFetchData(url); return <div>{data ? data.title : 'Loading...'}</div>; }
- Verwenden Sie eine aussagekr?ftige und konsistente Benennung Konsistente Namenskonventionen machen Ihren Code besser lesbar. Verwenden Sie camelCase für Funktionen und Variablen, PascalCase für Komponentennamen und beschreibende Namen für alle Requisiten und Zustandsvariablen.
Beispiel:
// Good: const isLoggedIn = true; const userProfile = { name: "John", age: 30 }; // Poor: const x = true; const obj = { name: "John", age: 30 };
- Verwenden Sie die Kontext-API sorgf?ltig Die Kontext-API von React ist ein leistungsstarkes Tool für die globale Zustandsverwaltung, aber eine überm??ige Nutzung kann Ihren Code komplex und schwer zu debuggen machen. Gehen Sie sparsam damit um und erw?gen Sie die Verwendung von Zustandsverwaltungsbibliotheken wie Redux oder Zustand für gr??ere Anwendungen.
Beispiel:
import React, { createContext, useContext, useState } from 'react'; const AuthContext = createContext(); export function AuthProvider({ children }) { const [isAuthenticated, setIsAuthenticated] = useState(false); return ( <AuthContext.Provider value={{ isAuthenticated, setIsAuthenticated }}> {children} </AuthContext.Provider> ); } export function useAuth() { return useContext(AuthContext); }
- Merken Sie sich teure Funktionen und Komponenten React rendert Komponenten jedes Mal neu, wenn die übergeordnete Komponente neu gerendert wird. Um unn?tiges erneutes Rendern zu verhindern, verwenden Sie React.memo für Komponenten und useMemo/useCallback für Funktionen.
Beispiel:
src/ ├── components/ │ └── Button/ │ ├── Button.js │ ├── Button.css │ └── index.js ├── pages/ │ └── Home.js └── App.js
- Verwenden Sie CSS-Module oder Styled-Components Vermeiden Sie globale Stile, indem Sie CSS-Module, gestaltete Komponenten oder ?hnliche Tools verwenden. Sie helfen dabei, Stile auf einzelne Komponenten zu beschr?nken, Stilkonflikte zu reduzieren und die Lesbarkeit zu verbessern.
Beispiel mit CSS-Modulen:
// Instead of class component: class MyComponent extends React.Component { state = { count: 0 }; increment = () => { this.setState({ count: this.state.count + 1 }); }; render() { return <button onClick={this.increment}>{this.state.count}</button>; } } // Use functional component with hooks: import React, { useState } from 'react'; function MyComponent() { const [count, setCount] = useState(0); return <button onClick={() => setCount(count + 1)}>{count}</button>; }
Beispiel mit Styled-Components:
import PropTypes from 'prop-types'; function Greeting({ name }) { return <h1>Hello, {name}</h1>; } Greeting.propTypes = { name: PropTypes.string.isRequired, };
- Testen Sie Ihre Komponenten Durch Tests stellen Sie sicher, dass Ihre Komponenten wie erwartet funktionieren, und helfen dabei, Fehler frühzeitig zu erkennen. Verwenden Sie die Jest and React Testing Library, um Komponententests für Komponenten zu schreiben und Tests in Ihren Workflow zu integrieren.
Grundlegendes Beispiel mit React Testing Library:
type GreetingProps = { name: string; }; const Greeting: React.FC<GreetingProps> = ({ name }) => { return <h1>Hello, {name}</h1>; };
Fazit
Indem Sie diese Best Practices befolgen, k?nnen Sie React-Code schreiben, der sauber, skalierbar und leicht zu warten ist. Das Organisieren von Dateien, die Verwendung funktionaler Komponenten, die Trennung von Logik und Benutzeroberfl?che und das Testen von Komponenten sind nur einige M?glichkeiten, um Ihre React-Anwendungen effizienter und angenehmer zu gestalten. Beginnen Sie mit der Anwendung dieser Techniken in Ihren Projekten, um die Qualit?t Ihres Codes zu steigern und die zukünftige Entwicklung schneller und angenehmer zu gestalten.
Das obige ist der detaillierte Inhalt vonReactJS Best Practices: Sauberen und wartbaren Code schreiben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

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

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PlatztagsattheBottomofabogpostorwebpageServeSpracticalPurposesforseo, Usexperience und design.1ithelpswithseobyallowingEnginestoaccessKeyword-relevantTagswithoutClutteringHemainContent.2.

Die folgenden Punkte sollten bei der Verarbeitung von Daten und Zeiten in JavaScript festgestellt werden: 1. Es gibt viele M?glichkeiten, Datumsobjekte zu erstellen. Es wird empfohlen, ISO -Format -Zeichenfolgen zu verwenden, um die Kompatibilit?t sicherzustellen. 2. Die Zeitinformationen erhalten und festlegen k?nnen und setzen Sie Methoden fest, und beachten Sie, dass der Monat mit 0 beginnt. 3. Die manuell formatierende Daten sind Zeichenfolgen erforderlich, und auch Bibliotheken von Drittanbietern k?nnen verwendet werden. 4. Es wird empfohlen, Bibliotheken zu verwenden, die Zeitzonen wie Luxon unterstützen. Das Beherrschen dieser wichtigen Punkte kann h?ufige Fehler effektiv vermeiden.

Ereigniserfassung und Blase sind zwei Phasen der Ereignisausbreitung in DOM. Die Erfassung erfolgt von der oberen Schicht bis zum Zielelement, und die Blase ist vom Zielelement bis zur oberen Schicht. 1. Die Ereigniserfassung wird implementiert, indem der UseCapture -Parameter von AddEventListener auf true festgelegt wird. 2. Ereignisblase ist das Standardverhalten, Uscapture ist auf false oder weggelassen. 3. Die Ereignisausbreitung kann verwendet werden, um die Ereignisausbreitung zu verhindern. 4. Event Bubbling unterstützt die Ereignisdelegation, um die Effizienz der dynamischen Inhaltsverarbeitung zu verbessern. 5. Capture kann verwendet werden, um Ereignisse im Voraus abzufangen, wie z. B. Protokollierung oder Fehlerverarbeitung. Das Verst?ndnis dieser beiden Phasen hilft dabei, das Timing und die Reaktion von JavaScript auf Benutzeroperationen genau zu steuern.

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

Der Müllsammlung von JavaScript verwaltet den Speicher automatisch über einen Tag-Clearing-Algorithmus, um das Risiko eines Speicherlecks zu verringern. Der Motor durchquert und markiert das aktive Objekt aus dem Wurzelobjekt, und nicht markiert wird als Müll behandelt und gel?scht. Wenn das Objekt beispielsweise nicht mehr referenziert wird (z. B. die Variable nach NULL), wird es in der n?chsten Runde des Recyclings freigegeben. Zu den h?ufigen Ursachen für Speicherlecks geh?ren: ① Unger?te Timer oder Event -H?rer; ② Verweise auf externe Variablen in Schlie?ungen; ③ Globale Variablen halten weiterhin eine gro?e Datenmenge. Der V8 -Motor optimiert die Recyclingeffizienz durch Strategien wie Recycling von Generationen, inkrementelle Markierung, paralleles/gleichzeitiges Recycling und verkürzt die Hauptblockierungszeit. W?hrend der Entwicklung sollten unn?tige globale Referenzen vermieden und Objektverb?nde umgehend dekoriert werden, um die Leistung und Stabilit?t zu verbessern.

Der Hauptunterschied zwischen ES -Modul und CommonJs ist das Lademethode und das Nutzungsszenario. 1.Kommonjs ist synchron geladen und für die node.js server-Seite-Umgebung geeignet. 2. Das Modul ist asynchron geladen und für Netzwerkumgebungen wie Browser geeignet. A. 4.Commonjs wird in alten Versionen von Node.js und Bibliotheken, die auf IT wie Express angewiesen sind, h?ufig verwendet, w?hrend ES-Module für moderne Front-End-Frameworks und Node.jsv14 geeignet sind; 5. Obwohl es gemischt werden kann, kann es leicht zu Problemen führen.

Der Unterschied zwischen VaR, LET und CONT ist Geltungsbereich, Werbung und wiederholte Erkl?rungen. 1.VAR ist das Funktionsbereich mit variabler Werbung, die wiederholte Deklarationen erm?glicht. 2. Das Glied ist der Umfang auf Blockebene mit vorübergehenden toten Zonen, und wiederholte Erkl?rungen sind nicht zul?ssig. 3.Konst ist auch der Umfang auf Blockebene und muss sofort zugewiesen werden und kann nicht neu zugewiesen werden, aber der interne Wert des Referenztyps kann ge?ndert werden. Verwenden Sie zuerst const, verwenden Sie LET, wenn Sie Variablen ?ndern, und vermeiden Sie die Verwendung von VAR.

Die Hauptgründe für den langsamen Betrieb von DOM sind die hohen Kosten für die Umlagerung, die Neuausrichtung und den niedrigen Zugangseffizienz. Zu den Optimierungsmethoden geh?ren: 1. Reduzieren Sie die Anzahl der Zugriffe und Cache -Lesewerte; 2. Batch -Lesen und Schreibvorg?nge; 3.. Zusammenführen und ?ndern, Dokumentfragmente oder verborgene Elemente verwenden; V. 5. Verwenden Sie Framework oder RequestAnimationFrame Asynchronous Update.
