Erstellung eines statischen Exports Ihrer Next.js-Anwendung
Next.js ermöglicht den Start als statische Website oder Single-Page Application (SPA), mit der Option, später auf Funktionen zu erweitern, die einen Server erfordern.
Beim Ausführen von next build
generiert Next.js eine HTML-Datei pro Route. Durch die Aufteilung einer strikten SPA in einzelne HTML-Dateien kann Next.js unnötigen JavaScript-Code auf der Client-Seite vermeiden, was die Bundle-Größe reduziert und schnellere Seitenladezeiten ermöglicht.
Da Next.js diesen statischen Export unterstützt, kann er auf jedem Webserver bereitgestellt und gehostet werden, der statische HTML/CSS/JS-Assets servieren kann.
Konfiguration
Um einen statischen Export zu aktivieren, ändern Sie den Ausgabemodus in next.config.js
:
Nach Ausführung von next build
erstellt Next.js einen out
-Ordner mit den HTML/CSS/JS-Assets für Ihre Anwendung.
Sie können getStaticProps
und getStaticPaths
nutzen, um für jede Seite in Ihrem pages
-Verzeichnis eine HTML-Datei zu generieren (oder mehr für dynamische Routen).
Unterstützte Funktionen
Die meisten Kernfunktionen von Next.js, die zum Erstellen einer statischen Website benötigt werden, werden unterstützt, darunter:
- Dynamische Routen mit
getStaticPaths
- Prefetching mit
next/link
- Preloading von JavaScript
- Dynamische Imports
- Alle Styling-Optionen (z.B. CSS-Module, styled-jsx)
- Client-seitiges Daten-Fetching
getStaticProps
getStaticPaths
Bildoptimierung
Bildoptimierung über next/image
kann mit einem statischen Export verwendet werden, indem ein benutzerdefinierter Image-Loader in next.config.js
definiert wird. Beispielsweise können Sie Bilder mit einem Dienst wie Cloudinary optimieren:
Dieser benutzerdefinierte Loader definiert, wie Bilder von einer Remote-Quelle abgerufen werden. Beispielsweise konstruiert der folgende Loader die URL für Cloudinary:
Sie können dann next/image
in Ihrer Anwendung verwenden und relative Pfade zu den Bildern in Cloudinary angeben:
Nicht unterstützte Funktionen
Funktionen, die einen Node.js-Server erfordern oder dynamische Logik, die während des Build-Prozesses nicht berechnet werden kann, werden nicht unterstützt:
- Internationalisiertes Routing
- API-Routen
- Rewrites
- Redirects
- Headers
- Middleware
- Inkrementelle statische Regeneration
- Bildoptimierung mit dem Standard-
loader
- Draft Mode
getStaticPaths
mitfallback: true
getStaticPaths
mitfallback: 'blocking'
getServerSideProps
Bereitstellung
Mit einem statischen Export kann Next.js auf jedem Webserver bereitgestellt und gehostet werden, der statische HTML/CSS/JS-Assets servieren kann.
Bei Ausführung von next build
generiert Next.js den statischen Export in den out
-Ordner. Angenommen, Sie haben die folgenden Routen:
/
/blog/[id]
Nach next build
generiert Next.js die folgenden Dateien:
/out/index.html
/out/404.html
/out/blog/post-1.html
/out/blog/post-2.html
Wenn Sie einen statischen Host wie Nginx verwenden, können Sie Rewrites von eingehenden Anfragen zu den richtigen Dateien konfigurieren:
Versionsverlauf
Version | Änderungen |
---|---|
v14.0.0 | next export wurde zugunsten von "output": "export" entfernt |
v13.4.0 | App Router (Stable) fügt erweiterte Unterstützung für statische Exports hinzu, einschließlich React Server Components und Route Handlers. |
v13.3.0 | next export ist veraltet und wurde durch "output": "export" ersetzt |