====== LU10a - Statische Webseiten veröffentlichen (Nachtrag) ======
==== Definitionen / Unterscheidung ====
| **Browser**
* Applikation, um Webinhalte (HTML, CSS, JS) darzustellen
| **Webserver**
* Nimmt HTTP(S)-Requests entgegen und liefert Antworten zurück an den Browser
* Die Inhalte können statisch oder dynamisch sein
|
| **Frontend**
* Der Teil der Webseite, der an den Aufrufer ausgeliefert wird und im Browser läuft
| **Backend**
* Läuft auf dem Server und verarbeitet Anfragen
* Stellt Daten oder Funktionen über APIs bereit
|
| **Statische Webseite**
* Besteht aus fertigen Dateien (HTML, CSS, JS), die direkt ausgeliefert werden
| **Dynamische Webseite**
* Inhalte werden abhängig vom Request zur Laufzeit erzeugt (.php-> .html, ...)
|
==== Static vs 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, ob man Server-Side-Rendering (SSR) einsetzt oder nicht.
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
* Angular
* React
* Vite
* Astro (default)
Ausnahmen sind
* PHP
* .php
* Next.js mit API/SSR
* getServerSideProps
* Routing (route.js, route.ts, "/api/*")
* NextResponse
* cookies()
* headers()
* Express mit Templates
* .ejs
* .pug
* .hbs
==== Next.js ====
''next.config.js''
const nextConfig = {
output: 'export',
};
module.exports = nextConfig;
Nach dem erfolgreichen Ausführen von folgendem Befehl, sind die fertigen Dateien unter ''/out'' verfügbar.
npm run build
npx serve out
Mögliche Fehler:
* „Route Handlers are not supported with output: export“
* „Dynamic server usage“