Komponenten

In dieser Aufgabe erstellst du eigene Komponenten und definierst Properties.

Aufgabenstellung

Du entwickelst einen Newsfeed für eine Onlinezeitung. Die Daten werden dir später von einem Backend bereitgestellt. Du erhältst den Titel, einen kurzen Textausschnitt (Teaser) sowie die gesamte Anzahl Wörter eines jeden Newsbeitrags.

Lösungsschritte

Verwende folgenden Vue Playground als Startpunkt für deine Lösung:

Vue Playground Vorlage

Komponente extrahieren

Das .newsfeed__item Element ist aktuell drei Mal im HTML vorhanden. Es soll noch an zahlreichen anderen Orten auf der Website des Kunden verwendet werden. Deshalb macht es Sinn, dieses HTML in eine eigene Komponente auszulagern.

Lösungshilfe

Dein <template> sollte nun wie folgt aussehen:

Properties definieren

Alle NewsfeedItem zeigen aktuell den selben Inhalt an. Wir brauchen Properties, um den Inhalt dynamisch bestimmen zu können.

Probleme mit dem Bild?

Das src Attribut von <img> Tags lässt sich nicht mit {{ item.image }} befüllen.

Schaue in den Kursunterlagen zu Properties nach, ob du eine Lösung findest.

Liste rendern

Im App.vue soll die Liste von NewsfeedItem nun dynamisch generiert werden.

Werden die Inhalte nicht richtig angezeigt?

Vielleicht übergibst du die Variablen falsch an die Komponente weiter. Schaue in den Unterlagen zu den Properties, ob du ein Beispiel dazu findest.

Lesezeit berechnen

Für jeden Newsbeitrag wissen wir, wie viele Wörter im Inhalt sind. Wir gehen von einer durchschnittlichen Lesegeschwindigkeit von 300 Wörtern pro Minute aus.