Appearance
Kapitel 2: Frontend-Grundlagen auffrischen
Bevor wir mit React beginnen, müssen wir sicherstellen, dass Sie über solide HTML, CSS und JavaScript Grundlagen verfügen. Dieses Kapitel fasst die wichtigsten Konzepte zusammen.
2.1 HTML Grundlagen
📖 Semantische Tags
Semantische Tags beschreiben ihre Bedeutung klar:
html
<!-- ❌ Schlecht: Unklare Struktur -->
<div id="header">
<div class="nav">...</div>
</div>
<div id="main">...</div>
<!-- ✅ Gut: Semantisch klar -->
<header>
<nav>...</nav>
</header>
<main>...</main>
<footer>...</footer>Wichtige semantische Tags:
<header>: Kopfbereich<nav>: Navigation<main>: Hauptinhalt<section>: Abschnitt<article>: Eigenständiger Inhalt<footer>: Fußbereich
📝 Formularelemente
html
<form>
<!-- Text-Eingabe -->
<input type="text" placeholder="Benutzername" />
<!-- Auswahl -->
<select>
<option value="de">Deutschland</option>
<option value="at">Österreich</option>
</select>
<!-- Checkbox -->
<input type="checkbox" id="agree" />
<label for="agree">Ich stimme zu</label>
<!-- Radio -->
<input type="radio" name="gender" value="male" /> Männlich
<input type="radio" name="gender" value="female" /> Weiblich
<!-- Submit -->
<button type="submit">Absenden</button>
</form>📐 Layout-Grundlagen
html
<!-- Flexbox Grundlagen -->
<div style="display: flex; justify-content: center; align-items: center;">
<div>Element 1</div>
<div>Element 2</div>
</div>
<!-- Grid Grundlagen -->
<div style="display: grid; grid-template-columns: 1fr 1fr 1fr;">
<div>Spalte 1</div>
<div>Spalte 2</div>
<div>Spalte 3</div>
</div>2.2 CSS Grundlagen
🎨 Flexbox Layout
css
.container {
display: flex;
justify-content: space-between; /* Horizontal */
align-items: center; /* Vertikal */
flex-wrap: wrap; /* Zeilenumbruch */
}
.item {
flex: 1; /* Gleiche Breite */
margin: 10px;
}📐 Grid Layout
css
.container {
display: grid;
grid-template-columns: repeat(3, 1fr); /* 3 Spalten */
gap: 20px; /* Abstand zwischen Elementen */
}
.item {
grid-column: span 2; /* Element überspannt 2 Spalten */
}🎯 Spezifität (Specificity)
CSS wählt Regeln basierend auf Spezifität aus:
Inline styles (style="") > ID (#id) > Klasse (.class) > Tag (div)css
/* Spezifität: 0-0-1 */
div {
color: black;
}
/* Spezifität: 0-1-0 */
.text {
color: blue;
}
/* Spezifität: 1-0-0 */
#header {
color: red;
}
/* Spezifität: 1-0-1 */
#header div {
color: green !important; /* Erzwingt diese Regel */
}📱 Responsive Design Grundlagen
css
/* Mobile-first Ansatz */
.container {
width: 100%;
}
/* Tablet */
@media (min-width: 768px) {
.container {
width: 750px;
}
}
/* Desktop */
@media (min-width: 1024px) {
.container {
width: 1000px;
}
}2.3 JavaScript Grundlagen (WICHTIG!)
📦 Variablen
javascript
// var (alt, vermeiden)
var name = "Max";
// let (neu, veränderbar)
let age = 25;
age = 26;
// const (neu, konstant)
const PI = 3.14159;🔧 Funktionen
javascript
// Normale Funktion
function add(a, b) {
return a + b;
}
// Pfeilfunktion (Arrow Function)
const multiply = (a, b) => {
return a * b;
};
// Kurzschreibweise (einzeilig)
const divide = (a, b) => a / b;📋 Arrays und Objekte
javascript
// Array
const fruits = ["Apfel", "Banane", "Orange"];
// Array-Methoden (wichtig für React!)
const numbers = [1, 2, 3, 4, 5];
// map: Transformiert jedes Element
const doubled = numbers.map(n => n * 2); // [2, 4, 6, 8, 10]
// filter: Filtert Elemente
const evens = numbers.filter(n => n % 2 === 0); // [2, 4]
// reduce: Reduziert Array auf einen Wert
const sum = numbers.reduce((acc, curr) => acc + curr, 0); // 15
// Objekt
const person = {
name: "Max",
age: 25,
greet() {
return `Hallo, ich bin ${this.name}`;
}
};🎯 ES6+ Syntax (WICHTIG für React!)
1. Destrukturierung (Destructuring)
javascript
// Objekt-Destrukturierung
const person = { name: "Max", age: 25, city: "Berlin" };
const { name, age } = person; // name = "Max", age = 25
// Array-Destrukturierung
const numbers = [1, 2, 3, 4, 5];
const [first, second] = numbers; // first = 1, second = 22. Template-Strings
javascript
const name = "Max";
const age = 25;
// ❌ Alt
console.log("Hallo, ich bin " + name + " und " + age + " Jahre alt.");
// ✅ Neu (Template Strings)
console.log(`Hallo, ich bin ${name} und ${age} Jahre alt.`);3. Spread-Operator (...)
javascript
// Array kopieren
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5]; // [1, 2, 3, 4, 5]
// Objekt kopieren/erweitern
const person = { name: "Max", age: 25 };
const person2 = { ...person, city: "Berlin" };
// { name: "Max", age: 25, city: "Berlin" }4. let und const
javascript
// ✅ Benutzen Sie const standardmäßig
const PI = 3.14159;
// ✅ Benutzen Sie let, wenn die Variable sich ändert
let counter = 0;
counter++;
// ❌ Vermeiden Sie var (kein Block-Scope)⏳ Asynchrone Programmierung
Promise
javascript
// Promise erstellen
const fetchData = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Daten empfangen!");
}, 1000);
});
};
// Promise verwenden
fetchData()
.then(data => console.log(data))
.catch(error => console.error(error));async/await (EMPFOHLEN!)
javascript
// Asynchrone Funktion
const fetchData = async () => {
try {
const response = await fetch("https://api.example.com/data");
const data = await response.json();
return data;
} catch (error) {
console.error("Fehler:", error);
}
};
// Verwendung
fetchData().then(data => console.log(data));🔄 Array-Methoden (HÄUFIG in React verwendet!)
javascript
const users = [
{ id: 1, name: "Max", age: 25 },
{ id: 2, name: "Anna", age: 30 },
{ id: 3, name: "Tim", age: 20 }
];
// map: Rendert Liste (SEHR WICHTIG in React!)
const userList = users.map(user => `<li>${user.name}</li>`);
// filter: Filtert Elemente
const adults = users.filter(user => user.age >= 21);
// find: Findet erstes Element
const max = users.find(user => user.name === "Max");
// some: Prüft, ob mindestens ein Element Bedingung erfüllt
const hasAdults = users.some(user => user.age >= 21); // true
// every: Prüft, ob alle Elemente Bedingung erfüllen
const allAdults = users.every(user => user.age >= 21); // false
// reduce: Reduziert Array auf einen Wert
const totalAge = users.reduce((sum, user) => sum + user.age, 0); // 75📝 Zusammenfassung
In diesem Kapitel haben wir die wichtigsten Frontend-Grundlagen für React gelernt:
✅ HTML
- Semantische Tags
- Formularelemente
- Layout-Grundlagen
✅ CSS
- Flexbox und Grid
- Spezifität
- Responsive Design
✅ JavaScript (WICHTIG!)
- ES6+ Syntax (Arrow Functions, Destructuring, Template Strings)
- Asynchrone Programmierung (Promise, async/await)
- Array-Methoden (map, filter, reduce) - SEHR WICHTIG für React!
🎯 Nächste Schritte
Im nächsten Kapitel werden wir:
- Die Entwicklungsumgebung einrichten
- VS Code und Plugins installieren
- Node.js und npm konfigurieren
Bereit für die Installation? → Kapitel 3: Entwicklungsumgebung einrichten
