Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:ffit:3-jahr:cicd:learningunits:lu10:a [2026/04/28 15:21] – apeter | de:modul:ffit:3-jahr:cicd:learningunits:lu10:a [2026/05/21 09:26] (aktuell) – apeter | ||
|---|---|---|---|
| Zeile 6: | Zeile 6: | ||
| * Applikation, | * Applikation, | ||
| </ | </ | ||
| - | * Liefert Inhalte über HTTP(S) an den Browser | + | * Nimmt HTTP(S)-Requests entgegen und liefert Antworten zurück |
| * Die Inhalte können statisch oder dynamisch sein | * Die Inhalte können statisch oder dynamisch sein | ||
| </ | </ | ||
| Zeile 18: | Zeile 18: | ||
| | < | | < | ||
| - | * Besteht | + | * Besteht aus fertigen |
| </ | </ | ||
| * Inhalte werden abhängig vom Request zur Laufzeit erzeugt (.php-> .html, ...) | * Inhalte werden abhängig vom Request zur Laufzeit erzeugt (.php-> .html, ...) | ||
| </ | </ | ||
| + | |||
| + | ==== SSR vs. Entkoppelte Frontend/ | ||
| + | |||
| + | In modernen Webprojekten wird häufig eine klare Trennung von Frontend und Backend umgesetzt: | ||
| + | |||
| + | Frontend: z. B. mit Angular, React oder Vanilla JS | ||
| + | Backend: REST- oder GraphQL-API (z. B. in Node.js, Java, Python) | ||
| + | |||
| + | Diese Architektur bietet klare Vorteile: | ||
| + | |||
| + | * Lose Kopplung (Frontend und Backend unabhängig entwickelbar) | ||
| + | * Austauschbarkeit (z. B. Frontend-Technologie wechseln) | ||
| + | * Einfache Deployments (statische Dateien + API) | ||
| + | * Gute Skalierbarkeit | ||
| ==== Static vs dynamic hosting ==== | ==== Static vs dynamic hosting ==== | ||
| - | ^ Static hosting ^ Dynamic hosting ^ | + | Ob etwas statisch deploybar ist, hängt nicht von den Features ab, sondern davon, ob der Server zur Laufzeit am Rendering beteiligt ist. |
| - | | | | | + | |
| + | Es ist also eine Architekturfrage, | ||
| + | |||
| + | Salopp gesagt, können die meisten Webapplikationen in ein statisches Frontend und ein (allfälliges) dynamisches Backend aufgeteilt werden. | ||
| + | |||
| + | Statische Webseiten sind möglich bei | ||
| + | * Vanilla / Plain Html und JS | ||
| + | * Angular | ||
| + | * React | ||
| + | * Vite | ||
| + | * Astro (default) | ||
| + | |||
| + | Ausnahmen sind | ||
| + | * PHP | ||
| + | * .php | ||
| + | * Next.js mit API/SSR | ||
| + | * getServerSideProps | ||
| + | * Routing (route.js, route.ts, "/ | ||
| + | * NextResponse | ||
| + | * cookies() | ||
| + | * headers() | ||
| + | * Express mit Templates | ||
| + | * .ejs | ||
| + | * .pug | ||
| + | * .hbs | ||
| ==== Next.js ==== | ==== Next.js ==== | ||
| + | |||
| + | '' | ||
| <code javascript> | <code javascript> | ||
| const nextConfig = { | const nextConfig = { | ||
| Zeile 37: | Zeile 76: | ||
| module.exports = nextConfig; | module.exports = nextConfig; | ||
| </ | </ | ||
| + | |||
| + | Nach dem erfolgreichen Ausführen von folgendem Befehl, sind die fertigen Dateien unter ''/ | ||
| <code bash> | <code bash> | ||
| npm run build | npm run build | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | npx serve out | ||
| + | </ | ||
| + | |||
| + | Mögliche Fehler: | ||
| + | * „Route Handlers are not supported with output: export“ | ||
| + | * „Dynamic server usage“ | ||
| + | |||
| + | |||
| + | ==== Vite ==== | ||
| + | |||
| + | Sofern Das Projekt auf der AWS-Umgebung deployed wird, muss der Root-Pfad der Applikation neu gesetzt werden. | ||
| + | |||
| + | vite.config.js | ||
| + | <code javascript> | ||
| + | // vite.config.js | ||
| + | export default defineConfig({ | ||
| + | base: ' | ||
| + | ... | ||
| + | }) | ||
| </ | </ | ||