Was der Browser macht und was der Server macht
Wo aus dem JSON einer Schnittstelle etwas wird, das ein Mensch sieht, warum das DOM ein Baum ist und warum es nicht mehr skaliert, wenn man es von Hand ändert.
Deine Schnittstelle liefert zwölf Bytes JSON. Irgendwo zwischen diesen Bytes und der Person, die das Handy hält, gibt es einen Bildschirm mit Text, Buttons und Farben. Frontend heißt der letzte Abschnitt dieser Reise, und er läuft auf einem Gerät, das dir nicht gehört.
Die beiden Rollen kennst du schon aus den Architektur-Lektionen. Der Server hält die Daten, entscheidet, wer sie lesen darf, und antwortet mit JSON. Der Browser fragt und zeichnet dann. In dieser Lektion geht es um das Wort dann: was im Browser wirklich passiert, nachdem die Antwort angekommen ist, und warum dieser Teil eigene Ideen verdient.
Der Browser hält die Seite als Baum von Elementen, den DOM. Jeder Tag wird ein Knoten, und Verschachtelung wird zu einer Verbindung von Eltern und Kind. Wenn du Bäume aus Logik kennst, ist das dieselbe Idee: eine Wurzel, Zweige und Blätter, die den Text tragen. Wenn du einen Tag schreibst, beschreibst du eine Form dieses Baums.
document
html
head
title
body
h1
ul
li
li
liDie Seite als Baum: eine Wurzel, Zweige und Text an den Blättern.Der älteste Weg, die Seite zu aktualisieren, ist, selbst durch diesen Baum zu laufen. Finde den Knoten, erzeuge ein neues Element, hänge es ein, setze einen Text. Das funktioniert, und für eine Seite mit einem einzigen interaktiven Detail ist es immer noch die richtige Antwort.
const list = document.querySelector("#cart-items");
const row = document.createElement("li");
row.textContent = "Tea";
list.appendChild(row);
document.querySelector("#total").textContent = "12.90";Von Hand geschriebene Aktualisierungen: Element erzeugen, einhängen, Text setzen, Summe merken.Ein Framework stellt die Frage anders. Statt Anweisungen für den Browser schreibst du eine Beschreibung davon, wie der Bildschirm für deine Daten aussehen soll. Hier ist derselbe Warenkorb, beschrieben statt befohlen.
const cart = ["Bread", "Tea", "Apples"];
function Cart({ items }) {
return (
<ul>
{items.map((item) => (
<li>{item}</li>
))}
</ul>
);
}
const view = <Cart items={cart} />;Sei ehrlich bei diesem Tausch. Ein Framework bedeutet mehr Code, einen Build-Schritt, noch etwas zum Lernen und echte Kosten bei der Größe dessen, was du aufs Handy schickst. Dafür bekommst du eine Regel, die gilt, wenn die Seite wächst: Der Bildschirm wird aus den Daten beschrieben, einmal, an einer Stelle. Jede Diskussion über Frameworks ist am Ende eine Diskussion darüber, ob sich dieser Tausch für dieses Projekt lohnt.
Praxis
Ein Like-Zähler hört nach ein paar Klicks auf, sich zu aktualisieren: die Zahl bleibt bei 5 stehen und das Herz füllt sich nie. Die Antwort der Schnittstelle kam korrekt an. Welche Art von Code entscheidet, was ein Klick auf dem Bildschirm ändert?
Hinweise
- Frag dich, welche Maschine wach sein muss, damit der Klick etwas bewirkt.
- Das JSON kam einmal vom Server. Danach ist es die Aufgabe eines anderen Programms zu entscheiden, was ein Klick ändert.
Eine Shop-Seite lädt einen Preis aus einer Schnittstelle und lässt die Person danach einen Rabattcode eingeben. Bring die Schritte dieser Reise in die richtige Reihenfolge.
- 1Der Browser ändert nur die Elemente, deren Wert anders ist
- 2Der Nutzer tippt einen Code ein und der Browser rechnet die angezeigte Summe neu
- 3Der Server liest die Bestellung und antwortet mit JSON
- 4Der Browser fragt den Server nach der Bestellung
- 5Der Browser macht aus diesen Daten Elemente der Seite
Hinweise
- Der Browser kann keinen Preis zeichnen, den er noch nicht bekommen hat. Fang also damit an, dass die Anfrage die Seite verlässt.
- Jeder Schritt passiert nur an einer Stelle: erst auf dem Server, dann im Browser.
Ordne jede Aufgabe der Seite zu, die sie wirklich erledigt, und dazu den Grund, warum sie dorthin gehört.
Hinweise
- Frag dich, wer die Antwort noch ändern kann, nachdem sie losgeschickt wurde: alles, was der Nutzer erhält, steht unter der Kontrolle dieses Nutzers.
- Eine Seite kennt die Datenbank, die andere Seite weiß nur, was man ihr gesagt hat.