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 skoro już wiemy jak korzystać z graphql wiemy jak on działa to teraz
czas na przejście do właściwego developmentu proponuję ci zacząć
od branch numer 4 którego przed chwilą stworzyłem ponieważ tutaj dodałem
komponent button którego nie będziesz musiał musiała stalować podczas wykonywania
kursu i po prostu będzie nam łatwiej zaczynać właśnie od tego momentu w
tej lekcji pokażę ci jak obsługiwać obrazki i jak można to było robić kiedyś
jak gatby obsługuje to w taki swój autorski własny nowy sposób
mam już odpalone tutaj środowisko deweloperskie zarówno
graphql jak i zwykłą stronkę
to się zawsze robi automatycznie nie musisz się tym przejmować więc teraz pokażę ci
jak wygląda nasza strona wygląda ona w taki sposób tak jak już mówiłem mamy
tutaj nowy button to jest nowy komponent który został dodany przeze mnie do branch
numer cztery a to musimy osiągnąć tak musi wyglądać nasza strona
na szczęście layout jest naprawdę prosty zrobimy go sobie na grid żeby było jak
najszybciej się da natomiast to co jest tutaj wyzwaniem to właśnie
ten obrazek najpierw pokażę ci jak można by było
to zrobić po staremu czyli wykorzystując zwykły link czy też
ścieżkę do obrazka możemy najpierw sobie zrobić img teoretycznie
tutaj powinien być od razu background image na jakimś div no bo jednak to jest taki
ozdobnik do ero ale pokażę ci jedną i drugą wersję i decyzję pozostawiam tobie
więc pierwsze co moglibyśmy zrobić to podać
po prostu ścieżkę do naszego obrazka i teraz ta ścieżka żeby
zadziałała pamiętaj że gatsby automatycznie kopiuje sobie rzeczy do folderu public
i nie mamy za nad tym za bardzo władzy ponieważ on sobie
za pomocą graphql właśnie to wszystko elegancko parsuje wrzuca sobie do folderów
które sam nazywa więc jeśli chcemy to zrobić przez graphql tak
jak zrobimy to poprawnie już za chwilę to spoko ale jeśli chcesz jakiś
asset jakieś jakąś ikonkę jakieś zdjęcie jakiś obrazek wrzucić
sobie tak żeby on na pewno znajdował się w dokładnie tym miejscu którym chcemy
i żeby nazwa nie została zmieniona to możemy sobie w root
folderze naszego projektu czyli w naszym przypadku hatta website
stworzyć folder static po prostu on musi się tak
nazywać i załóżmy że skopiujemy sobie hero jpg
do folderu static i w tym momencie jeśli wejdę sobie do mojego index
i podam tutaj ścieżkę która jest
najprostsza na świecie czyli slash hero jpg to
zauważ że na naszej stronie pojawi się obrazek więc wszystkie rzeczy które
skopiujemy do folderu static zostaną przez gatsby automatycznie skopiowane do folderu
public i wrzucone luzem poza jakimkolwiek folderem a teraz
zobaczmy co by się stało gdybyśmy mieli tutaj jakiś podfolder na przykład
photos i to tutaj przeniesiemy
sobie nasz obrazek nasz obrazek nadal działa ale
jeśli zajrzymy sobie do folderu public to zobaczymy że mamy tutaj teraz hero
jpg ale mamy też folder photos hero jpg czyli
tak naprawdę gatsby zapisał sobie i jedną i drugą wersję tego co
mieliśmy wcześniej czyli przed przeniesieniem do folderu photos i po przeniesieniu do folderu
photos wynika to z tego że gatsby nie zawsze robi taki clean build czyli
nie zawsze wywala wszystkie pliki tylko często właśnie
w tej fazie developmentu buduje sobie rzeczy w oparciu o to
co już wcześniej zbudował żeby po prostu ten build leciał szybciej więc jeśli
chcemy sprawdzić czy faktycznie to działa to możemy zrobić taką
komendę którą ci teraz pokażę nazywa się gatsby clean która
robi nic innego jak usuwa folder cashe i folder public żebyśmy
następnie mogli zbudować sobie czystą wersję tego build który mamy teraz
taka rada też na przyszłość jeśli coś ci nie działa z gatsby jeśli
dzieją się jakieś takie dziwne błędy to bardzo prawdopodobne że po usunięciu folderu cache
one znikną one często na przykład się pojawiają w momencie gdy zaczytujemy jakieś
dane z api i na przykład coś tam się dziwnego wydarzyło
także warto od tego zaczynać debugowanie żeby prostu to wywalić to nas nic nie kosztuje oprócz tego
że musimy chwilkę dłużej poczekać na zbudowanie kolejnego builda wpisałem teraz
gatsby develop i zaraz zobaczymy co się wydarzy w naszym projekcie po
zbuildowaniu naszego nowego projektu zauważ że jak wrócimy
sobie naszej strony to obrazek się wywalił dlatego że mamy czysty build
który już nie ma tego hero na wierzchu ma tylko folder
photos a ta ścieżka która tutaj jest odwołuje się właśnie do
zawartości folderu public zawsze o tym pamiętaj nie do tych tutaj
assetów które mamy w src czy w root folderze zawsze ten
pierwszy slash symbolizuje folder public i warto to sobie
wbić do głowy i teraz jeśli chcę żeby moje hero jpg zaczęło z powrotem
działać to muszę prostu wpisać tutaj photos i teraz po odświeżeniu naszej strony zauważ że
obrazek wrócił na swoje miejsce więc w ten sposób możemy zarządzać assetami
jeśli chcemy żeby one wylądował w jakimś konkretnym miejscu to może być związane z
jakimiś ikonami z rzeczami które nie chcemy żeby były przetwarzane właśnie przez graphql w gatsby
natomiast nie jest to rekomendowana droga i warto jednak wyposażyć
się w te narzędzia nowoczesne czyli właśnie w to jak gatsby poprzez
graphql obsługuje zdjęcia dlaczego o tym opowiem ci w następnych
lekcjach natomiast teraz tylko spróbujmy podmienić to src na src
właśnie zaczytane przez graphql jak to zrobić najlepiej
jak zaczniemy sobie od localhost slash graphql
przed slashem pamiętaj że jest jeszcze trzy podkreślniki
są podkreślnik podkreślnik podkreślnik graphql wtedy wchodzimy do
graphql możemy sobie dodać nowe query i
to co my chcemy osiągnąć to znaleźć plik więc
zakładam że będzie to file możemy jego
nazwę podać i tak jak pamiętasz możemy wpisać
tutaj name dwukropek klamry eq
dwukropek hero a
to czego szukamy nazywa się w public url więc tak wygląda
query które musimy wpisać do naszego projektu public
url po prostu odnosi się do tego pliku który został przeniesiony przez gatsby do
folderu static ale już wewnątrz folderu public dlatego nazywa
się public url więc teraz chcemy użyć sobie
tego query wewnątrz naszego komponentu i zapytasz jak to zrobić
jak to napisać moglibyśmy to napisać z łapy ale moim zdaniem graphql
jest na tyle fajnym narzędziem że możemy to również wykorzystać właśnie do tego żeby
nauczyć się pisać takie query w graphql wewnątrz komponentów gatsby
po prostu kliknę tutaj code exporter i zauważ że
mamy tutaj przykładowy komponent który możemy sobie skopiować do
naszej strony i dopasować to co mamy do tego czego
nie mamy nie mamy na pewno tego query graphql więc możemy sobie to przekopiować
tutaj ponad nasz export default importów
nie musimy ściągać jedynie ten graphql z
gatsby musimy sobie wyciągnąć tutaj mieliśmy wcześniej link możemy to po prostu na
razie podmienić bo linka na razie tutaj żadnego nie ma to
co jest bardzo ważne to tutaj data jest przekazywana jako props
automatycznie do naszego komponentu za chwilkę to jeszcze omówię ten eksport możemy
sobie wywalić więc tak naprawdę skopiowaliśmy sobie graphql zaimportowany
z gatsby oraz to query które było na dole naszego komponentu zauważ
że to query zawiera dokładnie to samo co napisaliśmy wewnątrz naszego graphql w
tym miejscu to jest właśnie fajny ten code exporter jeśli mamy na przykład jakieś trochę
dłuższe query to fajnie żeby po prostu sobie to skopiować będzie nam
wtedy łatwiej okej a teraz wróćmy już do naszego komponentu i przyjrzyjmy
się co tutaj się wydarzyło bo to jest naprawdę bardzo ważne i to jest jedna z takich właśnie magicznych
rzeczy w gatsby które trzeba zrozumieć nie jest to trudne po prostu trzeba to ogarnąć
umysłem uwaga tłumaczę więc mamy folder pages i
wewnątrz folderu pages możemy pisać query które wygląda właśnie w taki sposób
że jest eksportowane wewnątrz jakiegoś consta ten
const może nazywać się jak chcemy i tutaj absolutnie nie ma to żadnego znaczenia
na tym etapie ponieważ nigdzie tego const nie wykorzystamy
i to jest właśnie ciekawe ten const jest eksportowany
następnie gatsby sobie go ogarnia tam na zapleczu zamiast nas on
wykorzystuje graphql zaimportowany z gatsby który po prostu przyjmuje tutaj stringa
podobnie trochę to wygląda jak styled components tylko
że zamiast css tutaj piszemy query graphql dokładnie takie samo jak
piszemy w graphql kiedy sprawdzamy sobie co dane query
wyrzuci i teraz żeby to query zadziałało to musimy podać
propsa do naszego komponentu i to co ci teraz pokazuje działa tylko
i wyłącznie jeśli używamy komponentu wewnątrz folderu pages wszystkie
komponenty poza folderem pages używają trochę innego sposobu na
właśnie pisanie query w graphql o tym opowiem ci troszkę później więc
pierwszy warunek to taki wyeksportowany const o dowolnej nazwie
który wykorzystuje graphql a drugi warunek który musimy spełnić
żeby nasza operacja się powiodła to przekazanie propsów do naszego komponentu
i teraz możemy podać po prostu props i zacznijmy chyba od tego żeby pokazać
ci co się w tym momencie dzieje wyplujemy sobie te
propsy w console logu po prostu w dowolnym miejscu w naszym komponencie akurat wrzucam tutaj
bo wiadomo że wtedy on zadziała odświeżam
i zauważ co my tutaj mamy mamy różne
rzeczy podawane przez różne komponenty różne funkcje różne metody w gatsby
do naszego komponentu mamy na przykład nawigację która jest przez
reach routem dodawana automatycznie namy location podobnie jest tutaj
ale mamy też taki obiekt jak data i ten
data jest właśnie przekazywany przez to query udowodnię ci to
wywalę teraz to wyeksportowane graphql query odświeżę
nasz komponent i zauważ że data już nie jest tutaj obecne mimo
że proxy są przekazywane więc tylko i wyłącznie w momencie kiedy eksportowany
jest jakiś graphql query z naszego komponentu nawet specjalnie zmieniłem
tutaj nazwę na kangur żeby ci pokazać że to może być cokolwiek wrócę
do query bo jest ładniejszą nazwą jeśli eksportujemy consta
query wykorzystującego graphql w naszym
komponencie wewnątrz folderu pages to po przekazaniu propsów pojawi się
tutaj obiekt data i to jest zasada którą trzeba po prostu zapamiętać i
z niej korzystać więc teraz jeśli chcemy wyciągnąc sobie to data
jak zwał tak zwał data spokój jak to mówią
gdzieniegdzie w polsce wykonsologujemy sobie teraz data i
zobaczymy że mamy tutaj file a file zawiera
public url więc teraz to co możemy zrobić to
podać tutaj w src już nie w stringu tylko w klamrach data
file public url zapisujemy
to i zauważ że nasze zdjęcie działa i gratuluję ci
serdecznie właśnie napisaliśmy pierwsze graphql query w naszym gatsby
które przekazuje automatycznie dane do naszego komponentu
wewnątrz folderu pages i następnie te dane możemy wykorzystywać właśnie
na przykład w obrazkach w tym momencie może ci się to wydawać jakimś totalnym
overkillem żeby w ten sposób pisać query graphql żeby tylko
jakiś głupi obrazek wczytać do naszego komputera ale uważaj co
się wydarzy w następnej lekcji bo to jest naprawdę mega mega ciekawe