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+
Żeby zrozumieć jak działa gatsby-image najpierw musimy dowiedzieć się czym są fragmenty
w graphql fragmenty są niczym innym jak takim współdzielonym fragmentem
kodu który zawiera jakieś predefiniowane pola w naszym query to
znaczy że wykorzystując jakąś jedną nazwę poprzedzając ją trzykropkiem
możemy dostać się do pewnych danych które dostaniemy w takiej
paczce jakby pod właśnie nazwą którą wykorzystaliśmy i gatsby image
z racji że wykorzystuje właśnie bardzo wiele danych do wyświetlenia
naszego obrazka to wykorzystuje takie fragmenty graphql i
tutaj się zaczynają schody ponieważ nie możemy tych fragmentów wykorzystać w graphql
normalnie wyglądałoby to w ten sposób że mamy sobie na przykład gatsby-image
sharp fixed a nasze query wygląda
w ten sposób jak widzisz graphql od razu nam podświetla to
ponieważ jest w pewien sposób ograniczone i po prostu nie rozumie
o co nam chodzi natomiast w naszym gatsby będzie to działać bez zarzutu więc już teraz możemy
sobie skopiować nasze query ale bez niczego w środku wrzucić je
w tym miejscu i
teraz w to puste miejsce tutaj wkleimy sobie coś co koresponduje
z metodą którą wykorzystaliśmy tutaj mamy akurat fluid więc zatrzymajmy
się przy tym fluid pamiętasz jaka była zasada fluid skaluje się do
szerokości kontenera fixed ma określoną wysokość i szerokość więc
teraz weźmy sobie na przykład to pierwsze z brzegu gatsby image sharp fluid
jeśli wykorzystujemy fixed wszystko musi być zakończone na fixed jeśli wykorzystujemy
fluid wykorzystujemy te które mają po prostu w nazwie fluid prosta zasada
łatwo ją zapamiętać jak zapamiętać tę długą listę rzeczy
ja tego jeszcze do dzisiaj nie zrobiłem i tobie też nie radzę nie wiem czy
ma to jakikolwiek sens więc może po prostu warto odwiedzić stronę z dokumentacją
i za każdym razem sobie skopiować to co potrzebujemy zaraz wyjaśnię ci
na czym polegają te dodatkowe opcje które mamy tutaj bo to też jest również całkiem ciekawe
ale najpierw wykorzystajemy sobie tą podstawową wersję więc teraz tutaj
wykorzystam fragment czyli wykorzystuję wielokropek i
podaję nazwę gatsby image sharp fluid to
wszystko co muszę zrobić następną rzeczą jak zobaczysz jest po prostu wykorzystanie
gatsby image które wygląda
w taki sposób gatsby-image mamy zainstalowane już wcześniej przez
przez gatsby w naszym repozytorium więc wystarczy że pobierzemy sobie
image from gatsby image możemy
to nazwać image a możemy to nazwać img pisane wielką literą jak wolisz
ja na razie zostawię sobie image to
sobie wywalimy podamy
tutaj image i
teraz w przeciwieństwie do tego img które mamy w html czy to w jsx
ale to jest w tym przypadku to samo image
nie przyjmuje src tylko przyjmuje propsa albo fluid albo
fixed zależy co wykorzystujemy w naszym przypadku wykorzystujemy fluid więc
musimy podać fluid i zauważ że nie podajemy
już tego fragmentu który był tutaj podajemy wszystko co znalazło się aż
do tego punktu tutaj akurat mamy przykład z fixed ale my wykorzystamy fluid
więc wkleję sobie to tutaj data file się zgadza child image
sharp też tutaj mamy fluid i to jest wszystko co muszę tutaj wpisać
teraz jak sobie to zapiszę i odpalę
naszą stronę to nasz obrazek pojawił się na dole wynika
to z faktu że po prostu te style nie są zaaplikowane więc spróbujmy zaaplikować
te style do styled component wykorzystując image
który zaimportowaliśmy sobie do tego pliku nie
jestem pewien co się stanie bo tak jak mówiłem pozycjonowanie tych obrazków nie jest
najprzyjemniejsze na świecie i tak jak myślałem wydarzyło coś czego nie chciałem zauważ że
jak dodałem important do position absolute to ten obrazek się wczytał
i teraz właśnie ocho teraz jest coś najlepszego tutaj w tym wszystkim już
pewnie to widziałeś widziałaś ale jeszcze raz to zrobię tylko sobie włączę
network i jakieś throttle tutaj zapodamy slow
3g odświeżam stronę i zauważ że nasz
obrazek przez chwilkę był faktycznie taki niewyraźny taki zblurowany
i oczywiście jesteśmy teraz w środowisku deweloperskim więc to
nie jest jeszcze jakoś super zoptymalizowane ale kiedy wjadę już te wszystkie optymalizacji od gatsbiego
które spowodują że ta strona wczytuje się jeszcze szybciej to doładowanie obrazków
naprawdę robi robotę problem pojawia się jednak w momencie kiedy zobaczymy sobie
co tutaj się znajduje i tutaj mamy kilka rzeczy które mi się osobiście nie za
bardzo podobają na przykład mamy obrazek w formacie base 64 który w przypadku
takich zdjęć jest po prostu nie za dobry ponieważ mocno obciąża procesor i
żeby to wyświetlić to z reguły jest około 16 razy wolniejsza od zwykłych
obrazków więc no niekoniecznie chciałbym to wykorzystywać nie wiem w sumie po
co oni to wykorzystują tutaj w gatsby-image też jakoś specjalnie w to nie wnikałem
po prostu tego nie używam ale mamy za to specjalne fragmenty które mają na przykład no
base 64 i teraz jak sobie to wykorzystamy
tutaj
oczywiście nic nie zmieniam bo fluid jak był tak był a
mądre gatsby mówi że nie mogę wykorzystać fixed ponieważ używam fluid
no tak zagapiłem się fluid i
teraz jak sobie tu wrócimy to już nie będzie tego base 64
i mamy z głowy a ładowanie jak było tak
było że jak było base 64 to
jeszcze był taki fajny blur a teraz jest tylko takie mleczne po prostu pojawienie się
i mamy jeszcze bardzo ciekawą opcję tracedSVG
zaraz ci pokażę jak to działa jak sobie wpiszemy gatsby
image tracedSVG to zobaczysz tutaj na przykład przykład strony
który właśnie robi coś takiego jak najadę teraz na ten obrazek to
zobaczysz jak wygląda tracedSVG dla dla danego obrazka i zauważ że
to jest po prostu kształt tego jak ten obrazek wygląda przed
wczytaniem jak wiadomo pliki svg są dużo lżejsze
od plików rastrowych czyli obrazków z reguły oczywiście
chyba są jakoś super skomplikowane ale z reguły są szybsze bo są po prostu
pliki tekstowe więc jeśli teraz wrócimy sobie tutaj i
wpiszemy no właśnie musimy zerknąć na dokumentację tracedSVG
mamy gatsby image sharp fluid
podkreślnik tracedSVG i
teraz jeśli zapodamy sobie to tutaj zwiększyłem trochę wymiary
żeby ten obrazek się wolniej ładował a
przy okazji zrobimy sobie jeszcze jakiś throttle może fast 3g zobaczymy
to zobacz co się wydarzy zauważ że
najpierw ładuje nam się tracedSVG a później dopiero nasz obrazek i to jest
z punktu widzenia ux uczyli user experience bardzo fajna
rzecz bo jeśli mamy dużo obrazków na naszej stronie tak jak na przykład właśnie
mieliśmy tutaj to one się ładują najpierw ale już widzimy jakieś
takie placeholdery dla obrazków które za chwilkę się wczytają więc to jest naprawdę mega
spoko bo użytkownik nie musisz czekać na ten content ten content też nie
lata po naszej stronie on po prostu gdzieś tam jest i zaraz będzie wczytany to jest taka
obietnica dla użytkownika słuchaj tutaj za chwilę pojawi się obrazek na
razie masz tutaj taki kształt który może ci po prostu powiedzieć co tam mniej więcej może być
moim zdaniem mega fajne rozwiązanie i to jest akurat przewaga ogromna
przewaga gatsby image nad takim zwykłym tagiem img więc
tobie pozostawiam wybór kiedy i gdzie to wykorzystywać w trakcie tego kursu jeszcze zobaczysz
sobie właśnie różne zastosowania tego rozwiązania a
teraz wróćmy jeszcze na chwilę do naszego obrazka wywalmy
sobie może ten styled image po prostu wykorzystajmy tutaj zwykły image i
chcemy tym razem użyć fixed jedyne co muszę
zrobić to zastąpić fluid na fixed i max width zamienić
width height i powiedzmy
że tu będzie 100 na 160 nawet no to może
trochę więcej i tutaj też musi być fixed
oczywiście nasz obrazek się rozleci będzie tym razem na dole
ale chciałem ci pokazać o co tutaj chodzi że w momencie kiedy mamy
podane wymiary czyli width i height to ten obrazek
nie dość że się skaluje do tych wymiarów bez css to
jeszcze wykorzystuje
wszystko tutaj to co mamy po drodze więc teoretycznie moglibyśmy nasze obrazki
pozycjonować i stylować bez użycia css
więc na przykład jeśli teraz wywalę sobie height i
będziemy mieć tylko width na przykład 300 to ten obrazek będzie miał 300
szerokości a wysokość zostanie dopasowana automatycznie o
i mamy proporcje obrazka odpowiednio zachowanie i w taki sposób działa fixed
z reguły wtedy no nie wiem czy jest sens używania wtedy jakichś
styled component dla takich obrazków na bo jednak deklarujemy jego wielkość
w innym miejscu moglibyśmy ewentualnie zrobić coś takiego że
nie deklarujemy wtedy width i height dlatego tylko i
nawet tego nie musimy deklarować tylko deklarujemy pozycję
i wtedy faktycznie ten obrazek fixed również działa
ale tak jak mówię go się wykorzystuje
w momentach kiedy wiemy jaka ma być wielkość danego obrazka a tutaj no
nie wiemy jaka ona będzie no bo zależnie od tego jaka jest szerokość ekranu
to ten hero ma się zmieniać trochę wiadomo że tu nie mamy wersji mobilnej ale mimo wszystko
jest to dla nas nie wiadoma jaki ten hero image będzie duży więc to
tyle jeśli chodzi o wykorzystywanie gatsby image mam nadzieję że ci to dobrze
wytłumaczyłem dla mnie na samym początku kiedy się tego uczyłem to było naprawdę dość
trudne do zrozumienia ale też dokumentacja nie była tak dobrze przygotowana jak w tym momencie teraz
mamy tutaj wszystko wylistowane elegancko po tym jak ci to wyjaśniłem po zabawach
w graphql ze zwykłymi queries które były w poprzedniej lekcji wydaje
mi się że będziesz spokojnie mógł mogła wykorzystać teraz gatsby image do
tego żeby trochę poeksperymentować i zobaczyć jak to wszystko działa a już w następnym
rozdziale pokażę ci jak ogarniamy data flow w gatsby i jak
możemy zarządzać nim z poziomu takiego podstawowego cms