Skip to content
Polski
Wróć do katalogu

nextjs.org

200 OK

Next.js wzbogaca Reacta o routing, renderowanie i funkcje serwerowe

Developer ToolsGoogle AnalyticsNext.jsReact
Bezpośrednia odpowiedź

Next.js to framework Reacta do tworzenia pełnych aplikacji internetowych z routingiem, możliwościami serwerowymi, wieloma strategiami renderowania i ukierunkowaną interaktywnością w przeglądarce. Może udostępniać zarówno treści statyczne, jak i aplikacje generowane na podstawie żądań, ale właściwa architektura zależy od danych, buforowania, środowiska uruchomieniowego i wymagań po stronie klienta dla każdej trasy.

Ostatni pomiar:

Najważniejsze pojęcia

  • Pełny framework Reacta: Next.js dodaje do komponentów Reacta routing aplikacji, renderowanie, możliwości serwerowe, konwencje buforowania, kompilację i łączenie modułów.

  • App Router zorientowany przede wszystkim na serwer: Układy i strony App Router są domyślnie komponentami serwerowymi, natomiast komponenty klienckie zapewniają stan przeglądarki, zdarzenia, efekty i interfejsy API dostępne wyłącznie w przeglądarce.

  • Dostarczanie dostosowane do trasy: Trasy mogą być renderowane wstępnie, renderowane dynamicznie, buforowane lub ponownie walidowane zgodnie z ich danymi wejściowymi i wymaganiami dotyczącymi aktualności.

  • Eksport statyczny z ograniczeniami: Projekty bez wymagań wyłącznie serwerowych można eksportować jako pliki statyczne, natomiast funkcje zależne od środowiska uruchomieniowego wymagają zgodnej obsługi serwerowej.

  • Punkty końcowe należące do aplikacji: Route Handlers w App Router mogą przetwarzać żądania HTTP obok aplikacji, chociaż nadal obowiązują zwykłe wymagania dotyczące bezpieczeństwa API i działania operacyjnego.

  • Dwa wspierane routery: Zarówno nowszy App Router, jak i ugruntowany Pages Router są udokumentowane, ale ich modeli komponentów, danych i routingu nie należy traktować jako wymiennych.

  • Mierzone kompromisy: Zespoły powinny sprawdzać JavaScript po stronie klienta, buforowanie, zgodność wdrożenia, aktualność i działanie środowiska uruchomieniowego na reprezentatywnych trasach, zamiast zakładać określone rezultaty.

Compare the subject with other published sites in the same category.

All alternatives

Next.js wzbogaca Reacta o routing, renderowanie i funkcje serwerowe

Next.js to framework Reacta do tworzenia pełnych aplikacji internetowych. React zapewnia model komponentów interfejsów użytkownika, a Next.js dodaje routing, renderowanie, konwencje dostępu do danych, możliwości serwerowe, kompilację, łączenie modułów, buforowanie i narzędzia ukierunkowane na środowiska produkcyjne.

Głównym tematem jest framework, a nie jego domena. nextjs.org to oficjalna witryna, na której odwiedzający mogą znaleźć aktualizowaną dokumentację, przewodniki, odnośniki do społeczności oraz informacje o projekcie.

Next.js jest najbardziej przydatny, gdy zespół chce tworzyć rozwiązania w React, jednocześnie obsługując coś więcej niż interfejs działający wyłącznie w przeglądarce. Jeden projekt może zawierać strony renderowane wstępnie, odpowiedzi generowane w momencie żądania, dostęp do danych po stronie serwera, punkty końcowe w stylu API oraz interaktywne komponenty działające w przeglądarce.

Co Next.js dodaje do Reacta

React pomaga programistom opisywać interfejsy jako komponenty, ale nie narzuca kompletnej architektury aplikacji. Next.js zapewnia konwencje dotyczące przypisywania plików do tras, określania miejsca wykonywania kodu, ładowania danych, generowania odpowiedzi i przygotowywania aplikacji do wdrożenia.

Jego wartość wykracza więc poza renderowanie po stronie serwera. Aplikacja Next.js może korzystać z kilku metod renderowania i dostarczania, czasem w ramach tego samego projektu. Framework koordynuje te metody wokół Reacta, zamiast wymuszać jeden model dla każdej trasy.

Przydatne podsumowanie tego podziału wygląda następująco:

  • React definiuje komponenty, stan, właściwości i kompozycję interfejsu.
  • Next.js definiuje trasy, układy, wybory dotyczące renderowania, serwerowe punkty wejścia i zachowanie procesu budowania.
  • Aplikacja definiuje reguły dotyczące danych, granice klienta, zasady buforowania i wymagania wdrożeniowe.
  • Środowisko hostingowe określa, które funkcje środowiska uruchomieniowego są dostępne i jak działają.

To rozróżnienie ma znaczenie podczas porównywania Next.js z aplikacją kliencką Reacta, generatorem witryn statycznych lub innym frameworkiem internetowym. Framework oferuje szeroki zakres możliwości, ale projekt korzysta tylko z tych, które dobrze wykorzystuje.

Komponenty serwerowe i klienckie

W App Router układy i strony są domyślnie komponentami serwerowymi. Komponenty serwerowe wykonują się w środowisku serwerowym i mogą wykonywać operacje na danych po stronie serwera bez przesyłania swojej implementacji do przeglądarki.

Komponenty klienckie stosuje się, gdy część interfejsu potrzebuje stanu przeglądarki, procedur obsługi zdarzeń, efektów lub interfejsów API dostępnych wyłącznie w przeglądarce. Programiści oznaczają granicę klienta dyrektywą use client, a komponenty znajdujące się poniżej tej granicy stają się częścią grafu modułów po stronie klienta.

Pytanie Komponent serwerowy Komponent kliencki
Gdzie wykonuje się logika jego komponentu? W serwerowym środowisku renderowania W przeglądarce po dołączeniu do pakietu klienta
Czy może używać stanu przeglądarki lub procedur obsługi kliknięć? Nie Tak
Czy może bezpośrednio używać interfejsów API dostępnych wyłącznie w przeglądarce? Nie Tak
Czy kod jego komponentu jest wysyłany do przeglądarki? Nie jako kod komponentu klienckiego Tak
Typowa rola Treści oparte na danych, układy i kompozycja po stronie serwera Formularze, menu, edytory, filtry i inne interaktywne elementy sterujące

Trasa nie musi wybierać wyłącznie jednego typu. Komponent serwerowy może renderować treść i komponować wybrane komponenty klienckie dla interaktywnych części strony. Pozwala to zespołom umieszczać JavaScript przeglądarkowy wokół konkretnych potrzeb, zamiast traktować całą trasę jako aplikację kliencką.

Granica nadal wymaga rozwagi. Przeniesienie dużego poddrzewa komponentów za use client może spowodować wysłanie większej ilości JavaScriptu do przeglądarki, natomiast wydzielenie każdego małego elementu sterującego jako osobnej granicy może utrudnić zrozumienie kodu. Reprezentatywne strony należy mierzyć, zamiast oceniać je wyłącznie na podstawie etykiety frameworka.

Komponenty serwerowe są również czymś innym niż strategia dostarczania trasy. Komponent serwerowy może współtworzyć wstępnie renderowane dane wyjściowe albo uczestniczyć w renderowaniu dynamicznym. Określenie komponentu jako serwerowego samo w sobie nie mówi, czy trasa jest generowana podczas budowania, odświeżana później, czy tworzona dla każdego żądania.

App Router i Pages Router

Next.js dokumentuje obecnie dwa systemy routingu. App Router jest nowszym systemem i uwzględnia funkcje Reacta, takie jak komponenty serwerowe. Pages Router jest starszym systemem i nadal jest wspierany.

Obszar App Router Pages Router
Główna struktura tras Katalog app Katalog pages
Domyślny model komponentów Układy i strony są komponentami serwerowymi Korzysta z wcześniejszego modelu stron Next.js
Współdzielony interfejs Zagnieżdżone układy są centralną konwencją Zwykle komponowany za pomocą wzorców aplikacji i stron
Najlepszy punkt wyjścia Nowe projekty przyjmujące obecną architekturę Istniejące aplikacje lub zależności zbudowane wokół interfejsów API Pages Router

Migracja to coś więcej niż zmiana nazw folderów. Kod App Router wprowadza model komponentów zorientowany przede wszystkim na serwer oraz inne wzorce dotyczące układów, dostępu do danych, stanów ładowania i zachowania tras. Zespoły powinny rozpoznać te zmiany koncepcyjne przed konwersją dojrzałej aplikacji.

Nowe projekty powinny zwykle najpierw zapoznać się z dokumentacją App Router, ponieważ wyjaśnia ona obecny model frameworka. Istniejące aplikacje korzystające z Pages Router powinny ocenić migrację pod kątem rzeczywistych korzyści, zależności, nakładu pracy związanego z testowaniem i kosztów utrzymania, zamiast uznawać dalsze wsparcie za wadę.

Dokumentacja i przykłady mogą dotyczyć tylko jednego routera. Przed skopiowaniem implementacji programiści powinni sprawdzić, którego routera ona używa i czy przywołane interfejsy API mają zastosowanie w ich projekcie.

Renderowanie, buforowanie i ponowna walidacja

Next.js nie renderuje każdej strony w ten sam sposób. Trasę można przygotować przed przybyciem odwiedzającego, wygenerować z użyciem informacji właściwych dla żądania, przechować w pamięci podręcznej albo odświeżać zgodnie z zasadami ponownej walidacji.

Potrzeba trasy Prawdopodobne podejście do dostarczania Pytanie do sprawdzenia
Dane wejściowe są znane z wyprzedzeniem Wstępnie renderowane dane wyjściowe Jakie zdarzenie powinno spowodować zmianę danych wyjściowych?
Dane wyjściowe zależą od plików cookie, nagłówków lub danych żądania Renderowanie dynamiczne Czy jakąkolwiek część pracy można nadal bezpiecznie buforować?
Treść zmienia się według kontrolowanego harmonogramu Buforowane dane wyjściowe z ponowną walidacją Jak bardzo nieaktualna może stać się odpowiedź?
Nie jest wymagana żadna funkcja dostępna wyłącznie na serwerze Eksport statyczny może być odpowiedni Czy wszystkie trasy i zasoby są zgodne z ograniczeniami eksportu?

Buforowanie nie jest pojedynczym przełącznikiem, który można zrozumieć niezależnie od dostępu do danych. Zespoły muszą wiedzieć, które operacje są buforowane, które trasy stają się dynamiczne oraz jak przebiega unieważnianie lub ponowna walidacja. Reguły te należy testować przy realistycznych zmianach treści.

Jest to szczególnie ważne w przypadku stron uwierzytelnianych, cen, stanów magazynowych, pulpitów i innych informacji z jasno określonymi wymaganiami dotyczącymi aktualności. Udostępnianie buforowanych danych wyjściowych może być wartościowe, ale tylko wtedy, gdy pozwalają na to reguły poprawności aplikacji.

Wydajności i widoczności w wyszukiwarkach nie należy wywnioskowywać wyłącznie z etykiety sposobu renderowania. Renderowanie wstępne może ograniczyć pracę wykonywaną w momencie żądania, a renderowanie serwerowe może dostarczyć znaczący początkowy kod HTML, ale rzeczywiste rezultaty zależą od struktury strony, zasobów, opóźnień danych, JavaScriptu w przeglądarce, buforowania i zachowania wdrożenia.

Eksport statyczny i wymagania środowiska uruchomieniowego

Next.js może wygenerować eksport statyczny, gdy projekt nie zależy od funkcji frameworka dostępnych wyłącznie na serwerze. Powstałe pliki HTML, CSS, JavaScript i zasoby mogą być udostępniane przez infrastrukturę obsługującą zwykłe pliki statyczne.

Statyczne dane wyjściowe mogą nadal zawierać komponenty klienckie. Dostarczanie statyczne opisuje sposób hostowania zbudowanego wyniku; nie oznacza, że każdy interfejs musi być nieinteraktywny. Kod działający po stronie przeglądarki może nadal zapewniać stan, zdarzenia i inne zachowania klienckie.

Przed wybraniem eksportu statycznego sprawdź, czy projekt nie wymaga:

  • Odpowiedzi generowanych na podstawie danych serwerowych właściwych dla żądania.
  • Zachowania tras zależnego od aktywnego środowiska uruchomieniowego Next.js.
  • Nieobsługiwanych funkcji obrazów, routingu lub serwera.
  • Reguł aktualności, których nie można spełnić przez ponowne zbudowanie lub inny obsługiwany proces aktualizacji.
  • Serwerowych punktów końcowych, które muszą działać razem z aplikacją.

Gdy te możliwości są wymagane, aplikacja potrzebuje zgodnego środowiska uruchomieniowego. Nie wymaga to wdrożenia na Vercel: oficjalny przewodnik wdrażania dokumentuje samodzielny hosting i adaptery platform. Zakres wsparcia różni się między platformami, dlatego zgodność należy sprawdzić w odniesieniu do konkretnych używanych funkcji.

Route Handlers i punkty końcowe po stronie serwera

W App Router Route Handlers pozwalają aplikacji definiować procedury obsługi żądań HTTP z użyciem standardowych koncepcji żądań i odpowiedzi. Są przydatne w przypadku punktów końcowych należących do aplikacji, w tym przetwarzania formularzy, webhooków, odpowiedzi z danymi lub wywołań zwrotnych integracji.

Route Handler nie jest automatycznie właściwym miejscem dla każdego systemu zaplecza. Zespoły nadal powinny zdecydować, jak zarządzane są uwierzytelnianie, autoryzacja, walidacja, ograniczenia częstotliwości, trwałe zadania i obsługa błędów. Długotrwałe lub niezależnie skalowane usługi mogą być lepiej oddzielone od aplikacji internetowej.

Praktyczny przegląd obejmuje następujące pytania:

  1. Czy punkt końcowy potrzebuje dostępu do kodu aplikacji lub współdzielonych typów?
  2. Czy wymaga sekretów dostępnych w momencie żądania lub zależności wyłącznie serwerowych?
  3. Czy docelowe środowisko wdrożeniowe może wykonać procedurę obsługi zgodnie z dokumentacją?
  4. Jakie zachowanie buforowania jest właściwe dla każdej metody HTTP i odpowiedzi?
  5. Czy oddzielna usługa zapewniłaby wyraźniejszy podział odpowiedzialności lub skalowanie?

Route Handlers ułatwiają pełną kompozycję aplikacji, ale wygoda nie usuwa zwykłych obowiązków związanych z projektowaniem i bezpieczeństwem API.

Kiedy Next.js jest praktycznym wyborem

Next.js jest dobrym kandydatem dla zespołów, które znają już Reacta i potrzebują routingu aplikacji oraz możliwości serwerowych w tej samej bazie kodu. Może również odpowiadać produktom, w których poszczególne trasy mają znacząco różne potrzeby dotyczące dostarczania.

Typowe zastosowania obejmują:

  • Obszary konta i pulpity zawierające zarówno dane serwerowe, jak i interaktywne elementy sterujące.
  • Sklepy lub katalogi łączące stabilne treści z informacjami zależnymi od żądania.
  • Witryny dokumentacyjne lub marketingowe, które zawierają również procesy aplikacji.
  • Produkty potrzebujące jednocześnie odpowiedzi HTML, interakcji po stronie klienta i serwerowych punktów końcowych.
  • Aplikacje Reacta, których trasy korzystają z odrębnych zasad buforowania i renderowania.

Framework może oferować więcej mechanizmów, niż potrzebuje prosta witryna z treściami. Zespół publikujący głównie statyczne artykuły powinien porównać swoje potrzeby z narzędziami skoncentrowanymi na dostarczaniu treści, zwłaszcza jeśli tylko niewielka część witryny wymaga interakcji w React.

Next.js może być również nieodpowiedni, gdy zespół nie może obsłużyć jego wymagań dotyczących środowiska uruchomieniowego, nie chce korzystać z koncepcji renderowania właściwych dla frameworka albo miałby trudności z utrzymaniem wyraźnych granic między serwerem a klientem. Elastyczność jest cenna tylko wtedy, gdy architektura pozostaje zrozumiała.

Porównanie Next.js z Astro i innymi opcjami

Next.js i Astro są często oceniane w przypadku projektów łączących treść z elementami interaktywnymi, ale ich ustawienia domyślne i modele myślowe się różnią. Właściwy wybór zależy od rzeczywistych tras, a nie od ogólnego twierdzenia, że jeden framework jest szybszy lub lepszy.

Aby przeprowadzić przydatne porównanie, zbuduj tę samą reprezentatywną stronę w każdym rozważanym rozwiązaniu i zanotuj:

  • Ile JavaScriptu dociera do przeglądarki przed interakcją i po niej.
  • Jak ładowane są dane i jak kontrolowana jest ich aktualność.
  • Czy wymagane są funkcje serwerowego środowiska uruchomieniowego.
  • Jak zaimplementowano routing, układy, formularze i stany błędów.
  • Czy docelowy hosting obsługuje każdą wymaganą funkcję.
  • Jak łatwo zespół może testować i wyjaśnić powstałą architekturę.

Astro zasługuje na szczególną uwagę w przypadku witryn opartych głównie na treści, gdzie większość danych wyjściowych może pozostać statyczna, a interaktywne wyspy są ograniczone. Next.js staje się bardziej przekonujący, gdy React jest centralnym modelem aplikacji, a funkcje serwerowe i klienckie trzeba komponować w całym produkcie.

Żadne z tych porównań nie przewiduje wyniku wydajności. Obrazy, fonty, skrypty zewnętrzne, wybór komponentów, opóźnienia danych i granice klienta mogą mieć większe znaczenie niż domyślne ustawienia frameworka.

Początki, zarządzanie i społeczność

Oficjalna strona dotycząca zarządzania podaje, że zespół Vercel stworzył Next.js w 2016 roku. Podaje również, że główny zespół w Vercel kieruje pracami badawczo-rozwojowymi projektu. Jest to stwierdzenie dotyczące pochodzenia i zarządzania na poziomie zespołu; nie należy go zastępować niepopartym twierdzeniem o indywidualnym założycielu.

Zgodnie ze stronami dotyczącymi zarządzania i dokumentacji dostępnymi 27 sierpnia 2026 roku publiczne sposoby uczestnictwa w projekcie obejmują:

  • Oficjalne repozytorium GitHub z kodem źródłowym, zgłoszeniami i aktywnością projektu.
  • GitHub Discussions do zadawania pytań i społecznościowych dyskusji RFC.
  • Next.js Discord zapewniający bezpłatne wsparcie społeczności.
  • Aktualizowaną dokumentację zarówno dla App Router, jak i Pages Router.

Kanały te oferują różne rodzaje pomocy. Dokumentacja powinna być pierwszym źródłem informacji o zachowaniu frameworka, Discussions mogą przedstawiać propozycje i wspólne pytania, a Discord może wspierać rozmowy społeczności. Żaden z tych kanałów nie zastępuje testów właściwych dla projektu ani własnego procesu wsparcia produkcyjnego zespołu.

Lista kontrolna decyzji

Przed przyjęciem Next.js zespoły powinny odpowiedzieć na następujące pytania za pomocą działającego prototypu:

  • Które trasy są statyczne, dynamiczne, buforowane lub ponownie walidowane?
  • Które komponenty rzeczywiście wymagają stanu, efektów, zdarzeń lub interfejsów API przeglądarki?
  • Ile JavaScriptu klienckiego wysyła każda reprezentatywna trasa?
  • Które punkty końcowe należą do Route Handlers, a które powinny znajdować się gdzie indziej?
  • Czy docelowa platforma może uruchomić każdą wymaganą funkcję Next.js?
  • Jak będą zarządzane aktualność pamięci podręcznej, awarie, dzienniki i wdrożenia?
  • Czy zespół rozumie różnice między wybranym routerem a przykładami napisanymi dla drugiego routera?

Next.js polega na stosowaniu Reacta w kompletnej aplikacji internetowej przy świadomym wyborze miejsca wykonywania pracy i sposobu dostarczania każdej trasy. Jego udokumentowana elastyczność jest znaczna, ale nie gwarantuje wydajności, wyników wyszukiwania, niskich kosztów operacyjnych ani prostoty architektury. Rezultaty te trzeba ustalić poprzez implementację i pomiary.

Prawidłowa odpowiedź nie gwarantuje bezpieczeństwa. Pomiary opisują pojedynczą obserwację w określonym czasie.

Główne źródła

  1. 01Dokumentacja Next.js (otwiera się w nowej karcie)
  2. 02Komponenty serwerowe i klienckie Next.js (otwiera się w nowej karcie)
  3. 03Przewodnik wdrażania Next.js (otwiera się w nowej karcie)
  4. 04Przewodnik po eksportach statycznych Next.js (otwiera się w nowej karcie)
  5. 05Dokumentacja referencyjna komponentów serwerowych Reacta (otwiera się w nowej karcie)
  6. 06Oficjalne repozytorium Next.js (otwiera się w nowej karcie)
  7. 07Zarządzanie Next.js (otwiera się w nowej karcie)
  8. 08Dyskusje Next.js na GitHubie (otwiera się w nowej karcie)
  9. 09Next.js Discord (otwiera się w nowej karcie)

Częste pytania

Praktyczne odpowiedzi o produkcie i sposobie jego działania.

Czym jest Next.js i jaki ma związek z Reactem?

Next.js to framework do tworzenia pełnych aplikacji internetowych za pomocą Reacta. React zapewnia model komponentów, a Next.js dodaje routing, renderowanie, możliwości serwerowe, konwencje buforowania, kompilację, łączenie modułów i narzędzia ukierunkowane na wdrażanie.

Jaka jest różnica między komponentami serwerowymi a klienckimi?

W App Router układy i strony są domyślnie komponentami serwerowymi, a kod ich komponentów nie jest wysyłany do przeglądarki jako kod kliencki. Komponenty klienckie służą do obsługi stanu, procedur obsługi zdarzeń, efektów i interfejsów API dostępnych wyłącznie w przeglądarce. Jedna trasa może łączyć oba rodzaje.

Czy Next.js może wygenerować w pełni statyczną witrynę?

Tak. Next.js obsługuje eksport statyczny dla projektów, które nie wymagają funkcji frameworka dostępnych wyłącznie na serwerze. Wyeksportowane strony mogą nadal zawierać komponenty klienckie zapewniające interakcję w przeglądarce, ale funkcje działające w momencie żądania potrzebują zgodnego środowiska uruchomieniowego.

Czy każda strona Next.js korzysta z renderowania po stronie serwera?

Nie. Trasy mogą być renderowane wstępnie, renderowane dynamicznie na podstawie danych wejściowych właściwych dla żądania, buforowane lub ponownie walidowane. Komponenty serwerowe opisują miejsce wykonywania logiki komponentu; same nie określają, kiedy generowane są dane wyjściowe trasy.

Czy aplikacja Next.js musi być wdrożona na Vercel?

Nie. Oficjalny przewodnik wdrażania dokumentuje samodzielny hosting i adaptery platform. Zespoły powinny sprawdzić, czy wybrane środowisko obsługuje funkcje środowiska uruchomieniowego, buforowania, ponownej walidacji, obrazów i routingu używane przez ich aplikację.

Jaka jest różnica między App Router a Pages Router?

App Router jest nowszym modelem i domyślnie używa komponentów serwerowych dla układów i stron. Pages Router korzysta z wcześniejszego modelu stron Next.js i nadal jest wspierany. W przewodnikach i przykładach należy sprawdzać, dla którego routera są przeznaczone.

Co zespół powinien przetestować przed wyborem Next.js?

Zbuduj reprezentatywną trasę z rzeczywistymi danymi i interakcjami. Przeanalizuj granice komponentów serwerowych i klienckich, JavaScript w przeglądarce, zachowanie renderowania i pamięci podręcznej, wymagania Route Handlers, zgodność wdrożenia, reguły aktualności oraz obowiązki operacyjne.

Continue exploring

More published records in Developer Tools.

View all alternatives

Jak Astro przekształca treść w HTML i selektywnie dodaje interakcje

Developer ToolsTailwind CSS

Gatsby łączy witryny React z ustrukturyzowaną treścią i elastycznym renderowaniem

Developer ToolsGoogle Analytics

nuxt.com

200 OK

Twórz witryny i aplikacje Vue z routingiem, logiką serwerową i elastycznym renderowaniem

Developer ToolsNuxtVercel