Szybkie i Nowoczesne Strony
4 godz. 29 min · ReactJS · Full-stack i Programowanie
Adam RomanskiFrontend developer & YouTube CreatorI tak i nie! Gatsby to faktycznie React wzbogacony o pewne supermoce. Na początku kursu dowiesz się, jak poprawnie ich używać. Opowiem Ci w jaki sposób zaszyto Reach Router we wnętrze Gatsbyego – zobaczysz, że to bardzo intuicyjne i wygodne rozwiązanie. Ponadto opowiem Ci, w jaki sposób tworzyć uniwersalne, globalne style i layouty dla naszej aplikacji, aby zaoszczędzić sobie pracy. W tym wszystkim pomogą nam pluginy przygotowane specjalnie dla Gatsbyego (psst! Czy wiesz, że Gatsby posiada ich ponad 1500?).
Nie masz konta na fejsie? Nie szkodzi! Facebook stworzył nie tylko popularną platformę społecznością (i Reacta 😎), ale także przełomową specyfikację dla GraphQL – języka służącego do komunikacji między klientem a serwerem. To właśnie GraphQL zasila Gatsbyego w warstwę danych. Nie ważne czy mówimy o obrazkach, plikach markdown, json, yaml czy po prostu API – aby to wszystko ze sobą pogodzić musisz znać GraphQL. A ja w tym kursie pokażę Ci, że korzystanie z niego to czysta przyjemność.
Na początku pomysł importowania obrazów przez GraphQL może Ci się wydawać przerostem formy nad treścią. Dlatego poświęciłem w tym kursie cały dział na to, aby pokazać Ci, jak potężne możliwości stoją przed developerem wyposażonym w GraphQL, Sharp Image Transformer oraz Gatsbyego. Zapomnij o skalowaniu, przerabianiu i dostosowywaniu obrazków ręcznie w programach graficznych. Sprytne rozwiązania w Gatsbym pozwolą Ci za pomocą paru linijek zoptymalizować zasoby wizualne dla twojej strony.
Zarządzanie treścią to krytyczny punkt wielu produktów cyfrowych – z jednej strony CMS (content management system) musi być użyteczny dla developera przygotowującego całą strukturę treści, ale z drugiej strony ich końcowym użytkownikiem zawsze jest edytor, który nie musi znać się na programowaniu. W tym kursie pokażę Ci, jak w dosłownie kilku krokach stworzyć wygodną w użyciu strukturę dla bloga w oparciu o pliki markdown. Z małym udziwnieniem. Będą to pliki MDX łączące prostotę plików markdown z potężnymi możliwościami Reacta.
HeadlessCMS to podejście, które może przywoływać na myśl horrory klasy B, natomiast ich działanie przyprawia o zachwyt rodem z komedii romantycznej. Gdy zobaczysz jak proste, intuicyjne i wygodne (zarówno dla developera i edytora) jest korzystanie z podejścia headless, już nigdy nie wrócisz do klasycznych CMS-ów. W tym kursie pokażę Ci to na przykładzie fenomenalnego produktu jakim jest DatoCMS, którego odkryłem podczas budowania dużej struktury informacji dla strony mojej firmy.
Deployment strony w Gatsbym zajmuje dosłownie kilka sekund, zwłaszcza jeśli użyjemy do tego odpowiednich narzędzi. W tym kursie dowiesz się, w jaki sposób Gatsby przygotowuje zasoby przed wysłaniem ich na serwer, skąd biorą się dane w Gatsbym oraz w jaki sposób wdrożyć gotową stronę za pomocą serwisu Netlify.
Ten kurs powstał z myślą o osobach, które chcą być na bieżąco ze zmieniającym się ekosystemem frontendowym. Kurs koncentruje się nie tylko na Gatsby.js, ale także na technologiach orbitujących wokół tej technologii, korespondujących z nowym trendem nazwanym JAMStack.
2.19.12+
Okej zaczynamy kolejny rozdział tego kursu ale zanim ruszymy dalej
zanim pokażę ci jak utworzyć taki prosty cms wewnątrz gatsby za
pomocą plików mdx o których zaraz się trochę więcej dowiesz to muszę
ci pokazać jeszcze jeden sposób na pisanie queries żeby zaczytywać dane
do konkretnych komponentów do tej pory mówiłem ci jak tworzyć takie query
wewnątrz komponentów które są zawarte w folderze pages lub
też tworzone przez api właśnie gatsby w taki sposób że traktowane
są jako osobne strony w dalszej części tego kursu wyjaśnię ci jaka
jest różnica między tym co znajduje się w folderze pages a tym o czym przed chwilą wspomniałem ponieważ
to tworzenie stron takie programatyczne będzie wykonywane za pomocą pliku
gatsby node ale to taka ciekawostka tylko na przyszłość na razie sobie tym nie zaprzątaj
głowy natomiast jeśli mamy jakiś inny komponent nazwijmy
go na przykład sobie nie wiem stwórzmy w components post
na przykład zrobimy sobie taki folder zrobimy sobie taki komponent
zaimportujemy tu oczywiście react niech
to będzie taki zwykły komponent funkcyjny który nam zwraca zwykły
tekst na razie nic więcej musimy go sobie jeszcze wyeksportować
i teraz na stronie
głównej spróbujmy go sobie gdzieś zamontować powiedzmy
że gdzieś tutaj w okolicach naszego headera
on się automatycznie zaimportował dobra odpalmy
naszą stronę i mamy tutaj nasz
komponent i teraz w graphql zaczytajmy sobie jakieś proste
dane mamy na przykład takie super proste query każda strona w gatsby ma swoje
metadata które zawarte jest tutaj w config na
samej górze mamy site metadata możemy tu wpisać co chcemy ale mam na przykład coś
takiego jak description i to sobie teraz wykorzystamy możemy to
site metadata zaczytać właśnie w taki sposób że wczytujemy site site metadata i
jakiś klucz z tego obiektu który został zawarty w configu w ten sposób dostajemy
właśnie ten opis który przed chwilą ci pokazałem w gatsby config i
teraz załóżmy że chciałbym w tym komponencie post zaczytać
sobie jakieś dane jeśli ten post znajdowałby się w folderze pages to
mógłbym zrobić po prostu coś takiego export query
const query tutaj
sobie zaczytamy graphql z gatsby stworzymy
takie proste query kopiujemy klamry
pyk i
teraz w momencie jeśli to by się znajdowało w folderze pages to tutaj mógłbym
sobie zdekonstruować data tak jak robiłem to na przykład w index js i
tak jak wcześniej tłumaczyłam wtedy to dzieje się auto magicznie po prostu
gatsby z tego miejsca ładuje sobie te dane z query i wrzuca
je do data które możemy sobie zdekonstruować jako props i wciągnąć
tutaj wykorzystać jakoś w naszym komponencie zobacz co się stanie w momencie
kiedy zrobię to samo tutaj zrobimy sobie console log data
żeby zobaczyć co nam wypluje nasz komponent
a
mamy jeszcze jakiegoś jednego console loga w naszym
indeksie który nam psuje całą zabawę więc tamstąd go sobie wywalimy i
wydaje mi się że muszę przebudować projekt więc zrobię jeszcze raz
gatsby develop i zaraz zobaczymy
czy wtedy pojawi się ten console log okej
pojawił się console logs post js tutaj mamy informacje
o tym i jak widzisz data jest undefined wynika to właśnie z tego
czym mówiłem czyli nasz post nie jest zawarty w folderze pages przez
co przez gatsby nie jest traktowany jako strona tylko jako zwykły komponent więc jeśli
chcemy wykorzystać jakieś graphql query wewnątrz komponentu zwykłego
to musimy to zrobić troszeczkę inaczej musimy wykorzystać coś co się nazywa static query
i mamy tutaj dwie opcje najpierw pokażę ci pierwszą
trochę starszą moim zdaniem dużo mniej wygodną ale warto o nich wiedzieć jest
to po prostu zwykły komponent static query jeszcze
raz sobie skopiuję te query stąd i ten static
query po prostu wykorzystujemy w taki sposób że wrzucamy go do
naszego komponentu i on przyjmuje dwie rzeczy pierwsze to query
a drugie to render które
możesz znać moich kursów o react jest to po prostu nic innego jak render
props typowy który może nam zwrócić jsx
ale najpierw wpiszmy sobie to graphql query tutaj
na
razie robię to dość szybko ale zaraz zobaczysz wszystko wyjaśnię jeszcze krok po kroku
póki co niech się to tylko pojawi zmienimy
sobie tutaj data na props tutaj załadujemy jeszcze raz gatsby pisze
gatsby develop w mojej konsoli i jak
widzisz mamy tutaj normalnie w console logu sites site metadata description
czyli dokładnie to o co tam chodziło mogę sobie tu nawet zdekonstruować
i
teoretycznie wszystko powinno działać zobacz i wyrenderowałem
teraz to co zaciągnęłam sobie w query tutaj jako dane teraz
jeszcze raz po kolei co tu się wydarzyło wykorzystaliśmy specjalny komponent który
należy do biblioteki gatsby który możemy sobie
użyć normalnie jako komponent w naszym jsx i ten komponent przyjmuje dwa szczególne
propy jeden to query w którym możemy sobie wpisać
graphql query oczywiście z wykorzystaniem wcześniej za importowanego graphql
żeby gatsby wiedział co my tutaj w ogóle wpisujemy a drugi to
render który jest klasycznym render propem takim jak uczyłem kursach
o react w moich poprzednich kursach na eduweb i render prop jest niczym
innym jak po prostu propem który przyjmuje funkcje z której możemy sobie wyciągnąć
pewne dane które zostały przez jakiś inny komponent po prostu wstrzyknięte do
tej funkcji a następnie wykorzystać te dane zwracając po prostu z funkcji
w render propach jsx który po prostu będzie zawierać
te informacje zawarte tutaj jeśli jest to dla ciebie totalnie
dziwne i pierwszy raz coś takiego widzisz to zachęcam cię do zobaczenia mojego trzeciego kursu czyli
react zaawansowane techniki i tam właśnie dokładnie tłumaczę jak
działają render propsy myślę że to jest bardzo ważne żeby rozumieć jak
to działa ponieważ w gatsby dość często możemy to zauważyć ale jeśli
dobrze wiesz już co tutaj się wydarzyło to teraz pokażę ci nową szkołę jakby
nowy sposób na robienie tego samego czyli wykorzystanie static query jak się
pewnie domyślasz wszystko ostatnio w react zostało przepisane na hooki i nie inaczej
jest ze static query które wcześniej było komponentem a teraz może być również po prostu
hookiem tylko że z gatsby a nie react dobrze
wiesz że można tworzyć custom hooki i teraz takie query
możemy stworzyć w taki sposób podobnie
jak tutaj podaliśmy query jako prop tutaj możemy podać query jako
argument do funkcji nie musimy wtedy się bawić w te
render propy tutaj które mimo wszystko nie są jakoś
super czytelne jeśli mam możliwość
uniknięcia tego to zawsze to robię i zwracamy
po prostu coś takiego z tym że tutaj będzie data site site
metadata description bo jeszcze nie mamy tego
zdestrukturyzowanego i teoretycznie
nasz komponent powinien działać idealnie jest super
zmieńmy sobie title na przykład zobaczymy czy czy
to query faktycznie działa czy nic nam się nie zapisało czasem w cache zobacz zmienił
się teraz tytuł pozostawiam tobie kwestie
wyboru tego czy wolisz static query jako komponent czy jako hook ale
zauważ że hook jest dużo bardziej czytelny można jeszcze robić coś takiego ja często coś takiego
robię w projektach takich większych że query po prostu sobie wrzucam tutaj jako
const już go nie eksportuje po prostu wrzucam go w tym miejscu i
wtedy zapis tego komponentu jest po prostu taki czystszy ładniejszy mamy tutaj po
prostu query które jeśli chcemy możemy sobie podejrzeć ale nie rozwala
nam całego komponentu tym dość obleśnym stringiem który jest jednak tutaj taki
długi więc jeśli zajdzie taka potrzeba ja będę
zawsze używał hooka w tym kursie uważam że hook jest dużo fajniejszy natomiast chciałem
ci pokazac jak możemy właśnie korzystać z graphql wewnątrz komponentów które
nie są zawarte w pages tylko właśnie są zwykłymi komponentami i to
tyle jak widzisz nie jest jakoś super trudne tylko trzeba właśnie znać różnicę jak
zaczytywać do stron graphql i jak zaczytywać do komponentów a
w następnej lekcji już zaczynamy zabawę z mdx