Wdrażanie witryn internetowych Next.js w usłudze Azure Static Web Apps
Next.js obsługę usługi Azure Static Web Apps można podzielić na dwa modele wdrażania:
Hybrydowe: lokacje Next.js hybrydowe, które obejmują obsługę wszystkich funkcji Next.js, takich jak router aplikacji, router stron i składniki serwera React
Statyczne: statyczne witryny Next.js korzystające z opcji Statyczny eksport HTML Next.js.
Aplikacje Next.js hybrydowe (wersja zapoznawcza)
Usługa Static Web Apps obsługuje wdrażanie witryn internetowych Next.js hybrydowych. Umożliwia to obsługę wszystkich funkcji Next.js, takich jak router aplikacji i składniki serwera React.
Hybrydowe aplikacje Next.js są hostowane przy użyciu globalnie rozproszonego hosta zawartości statycznej usługi Static Web Apps i zarządzanych funkcji zaplecza. Next.js funkcje zaplecza są hostowane w dedykowanym wystąpieniu usługi App Service, aby zapewnić pełną zgodność funkcji.
W przypadku aplikacji Next.js hybrydowych strony i składniki mogą być dynamicznie renderowane, renderowane statycznie lub przyrostowo renderowane. Next.js automatycznie określa najlepszy model renderowania i buforowania na podstawie pobierania danych w celu uzyskania optymalnej wydajności.
Najważniejsze funkcje dostępne w wersji zapoznawczej to:
- Router aplikacji i router stron
- Składniki serwera React
- Renderowanie hybrydowe
- Programy obsługi tras
- Optymalizacja obrazów
- Internacjonalizacja
- Oprogramowanie pośredniczące
- Authentication
Postępuj zgodnie z samouczkiem dotyczącym wdrażania aplikacji Next.js hybrydowych , aby dowiedzieć się, jak wdrożyć aplikację Next.js hybrydową na platformie Azure.
Nieobsługiwane funkcje w wersji zapoznawczej
Następujące funkcje usługi Static Web Apps nie są obsługiwane w przypadku Next.js z renderowaniem hybrydowym:
- Wybierz pozycję Usługi platformy Azure: połączone interfejsy API przy użyciu usługi Azure Functions, usługi aplikacja systemu Azure, usługi Azure Container Apps lub usługi Azure API Management.
- Funkcje interfejsu wiersza polecenia swa: lokalne emulacja i wdrażanie interfejsu wiersza polecenia swa.
- Obsługa funkcji częściowych: następujące właściwości w
staticwebapp.config.json
pliku nie są obsługiwane:- Powrót nawigacji jest nieobsługiwany.
- Trasa ponownie zapisuje trasy do tras w aplikacji Next.js musi być skonfigurowana w programie
next.config.js
. - Konfiguracja w
staticwebapp.config.json
pliku ma pierwszeństwo przed konfiguracją w programienext.config.js
. - Konfiguracja witryny Next.js powinna być obsługiwana przy użyciu w
next.config.js
celu zapewnienia pełnej zgodności funkcji.
- Pomijanie kompilacji: w przypadku aplikacji Next.js, jeśli
skip_api_build=true
usługa Static Web Apps nie usuwa zależności deweloperskich lub domyślnie dodaje ostry pakiet. Jeśli chcesz, aby te optymalizacje były dodawane do niestandardowych kroków kompilacji przed przekazaniemskip_app_build=true
polecenia . - Regeneracja statyczna przyrostowa (ISR): buforowanie obrazów nie jest obsługiwane.
Uwaga
Maksymalny rozmiar aplikacji dla aplikacji hybrydowej Next.js wynosi 250 MB. Używanie funkcji autonomicznej przez Next.js dla zoptymalizowanych rozmiarów aplikacji. Jeśli nie jest to wystarczające, rozważ użycie wyeksportowanego Next.js statycznego kodu HTML, jeśli wymaganie dotyczące rozmiaru aplikacji przekracza 250 MB.
Renderowanie po stronie serwera
W poniższych krokach pokazano, jak skojarzyć niestandardowe zaplecze z planem w warstwie Standardowa i powyżej statycznych aplikacji internetowych.
Uwaga
Połączone zaplecza są dostępne tylko dla witryn korzystających z planu standardowego lub nowszego.
Przejdź do statycznej aplikacji internetowej w witrynie Azure Portal.
Wybierz pozycję Ustawienia , a następnie interfejsy API z menu bocznego.
Wybierz pozycję Konfiguruj połączone zaplecze.
Utwórz nowy plan usługi App Service lub wybierz istniejący plan usługi App Service.
Wybrany plan usługi App Service musi używać co najmniej jednostki SKU S1 .
Kliknij pozycję Łącze.
Statyczny eksport HTML
Możesz wdrożyć Next.js statyczną witrynę przy użyciu funkcji statycznego eksportu HTML Next.js. Ta konfiguracja generuje statyczne pliki HTML podczas kompilacji, które są buforowane i ponownie używane dla wszystkich żądań. Zobacz obsługiwane funkcje Next.js eksportów statycznych.
Statyczne witryny Next.js są hostowane w globalnie rozproszonej sieci azure Static Web Apps w celu uzyskania optymalnej wydajności. Ponadto możesz dodać połączone zaplecza dla interfejsów API.
Aby włączyć statyczny eksport aplikacji Next.js, dodaj output: 'export'
element do następnej konfiguracji w pliku next.config.js
.
/** @type {import('next').NextConfig} */
const nextConfig = {
output: 'export',
// Optional: Change the output directory `out` -> `dist`
// distDir: 'dist',
}
module.exports = nextConfig
Należy również określić element output_location
w konfiguracji funkcji GitHub Actions/Azure DevOps. Domyślnie ta wartość jest ustawiona na out
wartość zgodnie z Next.js wartościami domyślnymi. Jeśli w konfiguracji Next.js wskazana jest niestandardowa lokalizacja wyjściowa, wartość podana dla kompilacji powinna być zgodna z lokalizacją skonfigurowaną w eksporcie Next.js.
Jeśli używasz niestandardowych skryptów kompilacji, ustaw IS_STATIC_EXPORT
wartość na true
w zadaniu Static Web Apps pliku YAML funkcji GitHub Actions/Azure DevOps.
W poniższym przykładzie pokazano zadanie funkcji GitHub Actions, które jest włączone dla eksportów statycznych.
- name: Build And Deploy
id: swa
uses: azure/static-web-apps-deploy@latest
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for GitHub integrations (i.e. PR comments)
action: "upload"
app_location: "/" # App source code path
api_location: "" # Api source code path - optional
output_location: "out" # Built app content directory - optional
env: # Add environment variables here
IS_STATIC_EXPORT: true
Postępuj zgodnie z samouczkiem dotyczącym wdrażania statycznie renderowanych Next.js witryn internetowych , aby dowiedzieć się, jak wdrożyć statycznie wyeksportowaną aplikację Next.js na platformie Azure.