Skip to content
Polski
Wróć do katalogu

gatsbyjs.com

200 OK

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

Developer ToolsGoogle Analytics
Bezpośrednia odpowiedź

Gatsby to framework React do tworzenia witryn z ustrukturyzowanej treści i komponentów wielokrotnego użytku. Łączy warstwę danych GraphQL i wtyczki z renderowaniem statycznym, odroczonym, serwerowym i po stronie klienta.

Ostatni pomiar:

Najważniejsze pojęcia

  • Framework React: Gatsby wykorzystuje komponenty React do tworzenia interfejsów oraz dodaje konwencje dotyczące pobierania treści, tworzenia stron, przetwarzania zasobów, obsługi tras i renderowania produkcyjnego.

  • Ustrukturyzowana warstwa danych: Wtyczki źródłowe mogą przekształcać rekordy z plików, systemów treści i usług w węzły udostępniane przez Gatsby za pośrednictwem schematu GraphQL.

  • Cztery podejścia do renderowania: Projekty mogą korzystać z SSG, DSG, SSR za pośrednictwem getServerData oraz tras po stronie klienta, zależnie od wymagań poszczególnych stron i obsługi przez hosting.

  • Model rozszerzeń wielokrotnego użytku: Wtyczki dodają integracje, motywy zawierają funkcjonalność i konfigurację wielokrotnego użytku, a projekty startowe zapewniają podstawy projektu do dostosowania.

  • Zintegrowany proces obsługi treści i obrazów: Zapytania, szablony i wtyczki mogą łączyć ustrukturyzowane rekordy z przetworzonymi obrazami, podczas gdy redaktorzy i programiści pozostają odpowiedzialni za metadane i dostępność.

  • Kompromisy zależne od obciążenia: Czas kompilacji, wynik, wymagania środowiska wykonawczego i złożoność operacyjna zależą od skali treści, zapytań, zasobów, wyborów dotyczących renderowania i infrastruktury wdrożeniowej.

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

All alternatives

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

Czym jest Gatsby?

Gatsby to framework React do tworzenia witryn z komponentów i ustrukturyzowanej treści. Może gromadzić dane z plików, systemów zarządzania treścią, interfejsów API i innych usług, porządkować je za pomocą warstwy GraphQL oraz wykorzystywać do tworzenia stron z renderowaniem statycznym, odroczonym, po stronie serwera lub po stronie klienta.

Gatsby jest frameworkiem. gatsbyjs.com to jego oficjalna witryna i centrum dokumentacji. To rozróżnienie jest istotne, ponieważ przedmiotem tego przewodnika są architektura frameworka, jego pakiety i repozytorium, natomiast domena jest miejscem, w którym projekt publikuje dokumentację.

Projekt Gatsby zazwyczaj łączy kilka obszarów w jeden proces pracy:

  • Komponenty React definiują interfejs i elementy stron wielokrotnego użytku.
  • Wtyczki źródłowe importują treść i dane z systemów lokalnych lub zdalnych.
  • Gatsby normalizuje pobrane rekordy do postaci węzłów w swojej warstwie danych.
  • Zapytania GraphQL wybierają pola potrzebne stronom i komponentom.
  • Interfejsy API stron i szablony przekształcają dane w trasy.
  • Ustawienia renderowania określają, kiedy każda strona jest tworzona.

Związek Gatsby z React

React zapewnia model komponentów Gatsby. Programiści tworzą układy, nawigację, szablony i funkcje interaktywne z komponentów React, a Gatsby dostarcza otaczający je framework do obsługi tras, pobierania danych, tworzenia stron, przetwarzania zasobów i generowania wyników produkcyjnych.

Gatsby nie jest więc ani zamiennikiem React, ani jedynie biblioteką komponentów. Jest opiniotwórczym frameworkiem witryn zbudowanym wokół React. Zespoły mogą korzystać ze znanych mechanizmów JSX, kompozycji komponentów, właściwości, stanu i interakcji po stronie przeglądarki, używając jednocześnie interfejsów API właściwych dla Gatsby do obsługi danych i renderowania.

Co Gatsby dodaje do React

Obszar Co zapewnia React Co dodaje Gatsby
Interfejs Komponenty i stan Konwencje stron, układy i integrację z procesem kompilacji
Dane Wybór sposobu pobierania danych na poziomie aplikacji Znormalizowaną warstwę danych i proces zapytań GraphQL
Trasy Elementy konstrukcyjne aplikacji Strony oparte na plikach, programowe tworzenie stron i trasy wyłącznie po stronie klienta
Wynik Interfejsy renderowane w przeglądarce Statyczne, odroczone i wykonywane w czasie żądania renderowanie stron
Integracje Ogólny ekosystem JavaScript Wtyczki, motywy, projekty startowe i interfejsy API cyklu życia frameworka Gatsby

Taka struktura może odpowiadać zespołowi React tworzącemu publiczną witrynę z dużą ilością treści. Może być zbędna, gdy mały projekt wymaga niewielu integracji treści lub gdy jego wymagania dotyczą przede wszystkim aplikacji renderowanej po stronie klienta.

Warstwa danych i GraphQL

Warstwa danych Gatsby została zaprojektowana tak, aby zapewniać wspólny interfejs zapytań dla różnych źródeł treści. Wtyczki źródłowe pobierają rekordy i tworzą węzły Gatsby. Następnie Gatsby udostępnia te węzły poprzez schemat GraphQL, do którego mogą wysyłać zapytania strony i komponenty.

Witryna może łączyć pliki Markdown, obrazy, bezgłowy system treści oraz wybrane dane usług. Zamiast wymagać, aby każda strona rozumiała pierwotny format odpowiedzi każdego źródła, Gatsby może udostępnić odpowiednie rekordy za pośrednictwem wspólnego grafu.

Typowa ścieżka treści wygląda następująco:

  1. Plik, usługa lub platforma treści przechowuje oryginalny materiał.
  2. Wtyczka źródłowa importuje ten materiał podczas procesu pobierania danych przez Gatsby.
  3. Gatsby przedstawia zaimportowane rekordy jako węzły i tworzy schemat.
  4. Zapytania GraphQL pobierają pola wymagane przez stronę lub komponent.
  5. Szablon wykorzystuje wynik zapytania do utworzenia strony.
  6. Gatsby renderuje stronę zgodnie z wybranym trybem renderowania.

GraphQL ma kluczowe znaczenie w procesie obsługi danych źródłowych Gatsby, ale nie zastępuje każdej zwykłej wartości React. Właściwości komponentów, stan lokalny, zdarzenia przeglądarki i żądania po stronie klienta nadal mogą istnieć poza grafem czasu kompilacji. Warto ustalić, czy wspólny schemat Gatsby upraszcza treść, którą trzeba złożyć w strony.

Warstwa danych wiąże się również z dodatkową pracą. Zespoły muszą rozumieć zachowanie źródeł, relacje między węzłami, zmiany schematu i zależności zapytań. Graf ujednolicający kilka systemów może być wartościowy, ale koszt jego kompilacji i obciążenie związane z utrzymaniem należy sprawdzić na reprezentatywnej treści, zamiast wnioskować na podstawie witryny startowej.

Wtyczki źródłowe i szerszy model rozszerzeń

Wtyczki źródłowe łączą Gatsby z danymi. Mogą odczytywać lokalne pliki lub integrować systemy treści i usługi, a następnie tworzyć węzły uczestniczące w warstwie GraphQL. Odróżnia je to od wtyczek dodających przetwarzanie, analitykę, stylizację, obsługę obrazów lub inne zachowania cyklu życia.

Gatsby udostępnia rozwiązania wielokrotnego użytku w trzech powiązanych formach:

  • Wtyczki dodają źródło, transformację, integrację lub funkcję frameworka.
  • Motywy zawierają konfigurację i funkcjonalność Gatsby wielokrotnego użytku, które witryny mogą rozszerzać.
  • Projekty startowe zapewniają początkowy projekt, który programiści kopiują i dostosowują.

Projekt startowy może skrócić konfigurację, ale jego zależności i konwencje stają się odpowiedzialnością zespołu, który go przyjmuje. Motyw może utrzymywać spójność funkcjonalności między witrynami, ale zespoły powinny rozumieć, czym steruje. Wtyczka może wyeliminować potrzebę pisania niestandardowego kodu integracyjnego, choć jej zgodność i utrzymanie trzeba oceniać indywidualnie.

Istnienie dużej kategorii wtyczek nie dowodzi, że konkretny pakiet obsługuje używaną przez zespół wersję Gatsby, źródło danych lub model wdrożenia. Praktyczna ocena powinna wskazać dokładnie wymagane pakiety, sprawdzić ich dokumentację i aktywność repozytoriów oraz przetestować je w proponowanej architekturze.

Opcje renderowania w Gatsby

Początkowo Gatsby był silnie kojarzony z generowaniem witryn statycznych, ale jego dokumentacja definiuje obecnie kilka opcji renderowania. Można wybierać je dla poszczególnych stron, dzięki czemu publiczny artykuł, obszerne archiwum, trasa zależna od żądania i obszar aplikacji mogą korzystać z różnych modeli produkcyjnych.

Opcja renderowania Kiedy strona jest tworzona Odpowiednie pytanie
Static Site Generation (SSG) Podczas kompilacji Czy wymagana treść strony jest dostępna przed wdrożeniem?
Deferred Static Generation (DSG) Przy pierwszym żądaniu odroczonej strony Czy tę stronę można wyłączyć z początkowej kompilacji i czy hosting obsługuje Gatsby DSG?
Server-Side Rendering (SSR) W czasie żądania, z użyciem getServerData Czy odpowiedź wymaga danych lub kontekstu dostępnych w czasie żądania?
Trasa po stronie klienta W przeglądarce, dla ścieżki aplikacji Czy ta sekcja ma celowo charakter aplikacji i co jest dostępne przed zakończeniem wykonywania JavaScript?

Strony statyczne i odroczone

SSG tworzy HTML i powiązane zasoby podczas kompilacji. Jest naturalną opcją dla treści, której dane wejściowe są znane z wyprzedzeniem. Wygenerowane pliki mogą być łatwe do dystrybucji, ale duża liczba stron, kosztowne zapytania, liczne źródła treści lub intensywne przetwarzanie obrazów mogą zwiększyć wymagania procesu kompilacji.

DSG odracza wybrane strony do momentu ich pierwszego żądania. Może to zmniejszyć liczbę stron tworzonych podczas początkowej kompilacji, zwłaszcza gdy witryna ma długi ogon rzadko odwiedzanej treści. Wymaga również środowiska wdrożeniowego implementującego odroczone generowanie Gatsby; nie jest równoważne przesłaniu wyłącznie plików statycznych na dowolny hosting.

Renderowanie w czasie żądania i w przeglądarce

SSR generuje odpowiedź w czasie żądania za pomocą interfejsu API getServerData Gatsby. Może obsługiwać strony, których wynik zależy od bieżących informacji dostępnych w czasie żądania, ale wprowadza wykonywanie kodu na serwerze, decyzje dotyczące buforowania, obsługę awarii i wymagania infrastrukturalne, których unika strona całkowicie statyczna.

Trasy po stronie klienta obsługują w przeglądarce sekcje aplikacyjne. Mogą współistnieć z wygenerowanymi stronami publicznymi, ale zespoły powinny zbadać stany ładowania, nawigację, dostępność i treść dostępną przed uruchomieniem kodu po stronie klienta. Nie należy zakładać publicznej wykrywalności tylko dlatego, że trasa przeglądarki ostatecznie wyświetla właściwe informacje.

Żadna etykieta renderowania nie gwarantuje szybkości ani widoczności w wyszukiwarkach. Wyniki zależą od projektu strony, JavaScript, zasobów, źródeł danych, buforowania, hostingu i jakości implementacji. Gatsby zapewnia zespołom kilka opcji architektonicznych, ale nie eliminuje potrzeby ich pomiaru.

Obrazy i tworzenie treści

Obrazy często znajdują się w tym samym potoku treści co tekst i ustrukturyzowane rekordy. Wtyczki Gatsby mogą pobierać pliki obrazów, przekształcać je i łączyć przetworzone zasoby z zapytaniami stron. Komponenty mogą następnie renderować wybrane dane obrazów jako część szablonu strony.

Przydatny proces redakcyjny rozdziela obowiązki:

  • Redaktorzy zarządzają tytułami, treścią główną, metadanymi i odwołaniami do obrazów w wybranym źródle.
  • Wtyczki źródłowe importują te rekordy i wskazane zasoby.
  • Warstwa danych Gatsby łączy węzły treści z wymaganymi danymi obrazów.
  • Zapytania pobierają tylko pola i warianty obrazów potrzebne szablonowi.
  • Komponenty zapewniają podpisy, tekst alternatywny, wymiary i zachowanie układu.
  • Kompilacja produkcyjna sprawdza, czy rekordy, zasoby i trasy są poprawnie rozwiązywane razem.

Przetwarzanie obrazów może poprawić spójność, ale nadal jest pracą wykonywaną podczas kompilacji. Zespoły powinny przetestować rzeczywistą liczbę i rozmiar zasobów, potwierdzić wpływ zmian na ponowne kompilacje oraz zachować znaczący tekst alternatywny ze źródła redakcyjnego. Wtyczka nie może zdecydować, czy obraz ma charakter informacyjny, dekoracyjny albo czy został odpowiednio opisany.

Gdzie Gatsby może dobrze się sprawdzić

Gatsby jest szczególnie odpowiedni, gdy projekt już korzysta z React i musi składać treść z kilku systemów. Jego graf danych może zapewnić spójną warstwę między tymi źródłami a korzystającymi z nich szablonami stron.

Typowe sytuacje warte oceny obejmują:

  • Witryny dokumentacyjne lub redakcyjne łączące pliki, obrazy i platformę treści.
  • Witryny marketingowe z komponentami React wielokrotnego użytku i ustrukturyzowanymi rekordami stron.
  • Projekty publikacyjne korzystające z wielu źródeł, którym pomaga jeden interfejs zapytań.
  • Istniejące witryny Gatsby oparte na interfejsach API stron, GraphQL i sprawdzonych wtyczkach.
  • Duże zbiory treści, w których wybrane strony mogą być kandydatami do DSG.
  • Witryny łączące wygenerowane strony publiczne z sekcjami działającymi w czasie żądania lub po stronie klienta.

Gatsby może być mniej bezpośrednim wyborem, gdy projekt ma jedno proste źródło treści, nie korzysta ze znormalizowanego grafu lub potrzebuje architektury aplikacji skupionej głównie na operacjach wykonywanych w czasie żądania i po stronie klienta. Jest to ocena architektoniczna, a nie werdykt dotyczący jakości frameworka.

Kompromisy związane z kompilacją i wdrożeniem

Generowanie statyczne przenosi pracę na okres przed wdrożeniem. Gatsby może potrzebować pobrać dane źródłowe, zbudować schemat, wykonać zapytania, utworzyć strony, przetworzyć obrazy, spakować kod i zapisać wynik. Czas trwania i wymagania dotyczące zasobów zależą od rzeczywistego projektu.

Reprezentatywna ocena powinna uwzględniać:

Obszar testów Co sprawdzić
Skala treści Liczbę stron, liczbę węzłów, relacje i realistyczne rozmiary rekordów
Niezawodność źródeł Uwierzytelnianie, limity żądań, awarie i powtarzalne pobieranie
Zapytania Stabilność schematu, koszt zapytań i błędy po zmianach treści
Obrazy Skalę przetwarzania, użycie pamięci, rozmiar wyniku i metadane redakcyjne
Renderowanie Wynik SSG, pierwsze żądania DSG, odpowiedzi SSR i ładowanie tras po stronie klienta
Wdrożenie Obsługę każdego wybranego trybu, zachowanie buforowania i odzyskiwanie po awarii

Mała demonstracja nie może ustalić, jak zachowa się pełny katalog. Zespoły powinny testować czyste kompilacje, zmiany przyrostowe tam, gdzie są obsługiwane, awarie źródeł treści oraz strony znajdujące się zarówno na typowych, jak i skrajnych krańcach zbioru danych.

DSG może przenieść pracę poza początkową kompilację, natomiast SSR przenosi ją na czas żądań. Są to zmiany czasu wykonania i odpowiedzialności operacyjnej, a nie bezpłatne ulepszenia wydajności. Wybrany hosting musi obsługiwać wymagane zachowanie Gatsby, a zespół powinien rozumieć, co dzieje się podczas zimnego żądania lub awarii systemu nadrzędnego.

Gatsby, Astro i inne alternatywy

Zarówno Gatsby, jak i Astro mogą pojawić się w ocenach witryn opartych na treści, ale inaczej organizują projekty. Gatsby stawia w centrum React, własną warstwę danych GraphQL, wtyczki źródłowe oraz interfejsy API generowania stron. Astro należy oceniać na podstawie jego własnej udokumentowanej architektury, a nie domyślnie traktować jako szybszą lub nowszą odpowiedź.

Gatsby zasługuje na dokładniejsze rozważenie, gdy zespół chce używać React w całym interfejsie, musi wykonywać zapytania do kilku znormalizowanych źródeł treści, polega na integracjach Gatsby lub utrzymuje istniejącą bazę kodu Gatsby. Inny framework może być prostszy, gdy taki graf i cykl życia wtyczek dodawałyby strukturę, nie rozwiązując rzeczywistego problemu z treścią.

Przydatne porównanie polega na zbudowaniu tego samego reprezentatywnego fragmentu w każdym rozwiązaniu: jednego źródła treści, jednej złożonej strony, listy, obsługi obrazów, nawigacji i zamierzonego trybu wdrożenia. Należy porównać zrozumiałość dla programistów, zachowanie kompilacji, wynik w przeglądarce, dostępność, wymagania hostingowe i odpowiedzialność za utrzymanie. Nie należy ogłaszać uniwersalnego zwycięzcy na podstawie domyślnych szablonów.

Założyciel i oficjalne zasoby społeczności

W oficjalnej sesji pytań i odpowiedzi społeczności Gatsby opublikowanej 2 kwietnia 2020 roku Kyle Mathews został określony jako „Założyciel @ GatsbyJS”. To datowane przypisanie opisuje jego historyczną rolę w tym źródle; nie należy odczytywać go jako twierdzenia dotyczącego obecnego kierownictwa Gatsby.

Dokumentacja Gatsby kieruje programistów do oficjalnych kanałów społeczności przeznaczonych do różnych potrzeb:

Zasoby te pomagają czytelnikom weryfikować dokumentację, zadawać pytania dotyczące implementacji i przeglądać publiczne prace nad projektem. Ich istnienia nie należy przekształcać w niepoparte twierdzenia dotyczące czasu odpowiedzi, długowieczności pakietów czy przyszłych planów.

Co zespoły powinny ustalić przed przyjęciem Gatsby

  1. Sporządź mapę treści. Określ każde źródło, relacje między rekordami, częstotliwość aktualizacji oraz strony korzystające z poszczególnych pól. Pozwoli to stwierdzić, czy znormalizowana warstwa GraphQL Gatsby rozwiązuje istotny problem koordynacyjny.

  2. Przypisz tryb renderowania do reprezentatywnych stron. Potwierdź, które strony mogą być statyczne, które mogą być odroczone, które wymagają getServerData, a które celowo działają po stronie klienta. Sprawdź, czy docelowe środowisko wdrożeniowe obsługuje wynikającą z tego kombinację.

  3. Sprawdź konkretny zestaw zależności. Zweryfikuj wymagane wtyczki źródłowe, wtyczki transformujące, motywy, projekty startowe i narzędzia do obrazów pod kątem wersji Gatsby używanej w projekcie. Przygotuj prototyp niepewnych integracji, zanim staną się zależnościami architektonicznymi.

  4. Przetestuj obciążenie przypominające produkcyjne. Gatsby oferuje spójny framework React i treści, ale jego przydatność wynika ze zgodności z danymi, stronami, integracjami i modelem hostingu zespołu, a nie z ogólnych obietnic dotyczących szybkości, pozycji w wyszukiwarkach czy bezproblemowego skalowania.

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

Główne źródła

  1. 01Przewodnik koncepcyjny Gatsby po opcjach renderowania (otwiera się w nowej karcie)
  2. 02Dokumentacja referencyjna opcji renderowania Gatsby (otwiera się w nowej karcie)
  3. 03Dokumentacja referencyjna renderowania po stronie serwera w Gatsby (otwiera się w nowej karcie)
  4. 04Koncepcje GraphQL w Gatsby (otwiera się w nowej karcie)
  5. 05Wtyczki, motywy i projekty startowe Gatsby (otwiera się w nowej karcie)
  6. 06Repozytorium frameworka Gatsby (otwiera się w nowej karcie)
  7. 07Sesja pytań i odpowiedzi społeczności z Kyle’em Mathewsem, 2 kwietnia 2020 (otwiera się w nowej karcie)
  8. 08Zasoby społeczności Gatsby (otwiera się w nowej karcie)
  9. 09Przewodnik współtworzenia Gatsby (otwiera się w nowej karcie)
  10. 10GitHub Discussions projektu Gatsby (otwiera się w nowej karcie)

Częste pytania

Praktyczne odpowiedzi o produkcie i sposobie jego działania.

Czym jest Gatsby i jaki ma związek z React?

Gatsby to framework witryn zbudowany wokół React. React zapewnia model komponentów, natomiast Gatsby dodaje pobieranie treści, warstwę danych GraphQL, tworzenie stron, konwencje tras, wtyczki, przetwarzanie zasobów i kilka opcji renderowania.

Jak Gatsby gromadzi treść z różnych źródeł?

Wtyczki źródłowe importują rekordy z plików, systemów treści, usług i innych źródeł. Gatsby przedstawia pobrane rekordy jako węzły, tworzy wokół nich schemat GraphQL i pozwala stronom pobierać potrzebne pola.

Czy Gatsby wymaga GraphQL dla każdej wartości?

Nie. GraphQL ma kluczowe znaczenie w znormalizowanym procesie obsługi danych źródłowych Gatsby, ale zwykłe właściwości React, stan lokalny, zdarzenia przeglądarki i żądania po stronie klienta nie muszą wszystkie przechodzić przez warstwę danych Gatsby.

Jakie opcje renderowania obsługuje Gatsby?

Gatsby dokumentuje Static Site Generation, Deferred Static Generation, Server-Side Rendering za pośrednictwem getServerData oraz trasy po stronie klienta. Każda opcja zmienia moment wykonywania pracy oraz wymagania wobec środowiska wdrożeniowego.

Czym różnią się wtyczki, motywy i projekty startowe?

Wtyczki dodają integracje lub możliwości frameworka, w tym pobieranie źródeł i przetwarzanie obrazów. Motywy zawierają funkcjonalność i konfigurację Gatsby wielokrotnego użytku. Projekty startowe to początkowe projekty, które zespoły kopiują i dostosowują.

Kiedy Gatsby jest przydatną alternatywą dla Astro?

Gatsby warto ocenić, gdy zespół React potrzebuje znormalizowanej warstwy GraphQL, wielu źródeł treści, integracji właściwych dla Gatsby lub ciągłości istniejącej witryny Gatsby. Zespoły powinny porównywać reprezentatywne implementacje, zamiast zakładać, że którykolwiek framework jest uniwersalnie lepszy.

Co zespoły powinny przetestować przed przyjęciem Gatsby?

Należy przetestować realistyczne ilości treści i obrazów, niezawodność źródeł, zachowanie schematu i zapytań, tworzenie stron, czyste kompilacje, wdrożone strony SSG i DSG, odpowiedzi SSR, ładowanie po stronie klienta oraz obsługę każdego trybu renderowania na planowanym hostingu.

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

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

Developer ToolsGoogle AnalyticsNext.js

nuxt.com

200 OK

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

Developer ToolsNuxtVercel