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 w poprzedniej lekcji udało nam się stworzyć strukturę taką podstawową
strukturę dla modelu article w naszym nowym cms w datocms stworzyliśmy
sobie również query powiedzieliśmy o tym czym są fragmenty i teraz na podstawie tych
danych które datocms nam wysyła chcielibyśmy stworzyć coś co będzie
się dostosowywać do tej struktury która zwłaszcza pojawia się tutaj w article content
czyli jakoś musimy zmapować sobie to wszystko żeby nasz frontend wiedział
jaki komponent do jakiego rodzaju danych przypisać
i to wszystko po kolei najpierw po prostu spróbujmy sobie zaciągnąć jakoś
te dane i tak jak już mówiłem na samym początku kursu do gatsby jest
ponad 1500 pluginów i jeśli istnieje jakiś cms to prawdopodobnie
ma swój plugin dla gatsby więc teraz jeśli wpiszemy gatsby datocms to
pierwsze co nam wyskoczy to gatsby source datocms i bardzo fajnie jest korzystać właśnie
z tego typu rozwiązań no bo one mają pewne prekonfigurowane rzeczy
których my nie musimy później już robić więc po prostu skopiujmy sobie gatsby
source datocms do naszego projektu możemy sobie też od razu skopiować
ten obiekt który tutaj mamy on odpowiada za poprawne skonfigurowanie
tego pluginu wrzucimy go sobie gdzieś może
pod tymi fail systemami teraz
niektóre z tych rzeczy możemy sobie spokojnie wywalić myślę że
nawet wszystkie oprócz api token api
token to jest token który musimy przekazać do api żebyśmy mogli w
ogóle pobierać dane on jest łatwy do zlokalizowania wystarczy że wejdziemy sobie w settings
api tokens my potrzebujemy tylko read only token ponieważ nie będziemy
zapisywać nic z poziomu naszego frontendu do
naszej bazy danych w cms więc tylko read only kopiujemy
sobie ten token wrzucamy go tutaj
i uwaga od razu mówię to nie jest dobra droga tak się nie robi ponieważ
wtedy jeśli zrobimy push do jakiegoś repozytorium na to wrzucimy nasz token do
jakiegoś na przykład publicznego repo i wtedy każdy będzie widział jaki mamy
token każdy będzie mógł z naszego api korzystać więc absolutnie nigdy tego nie robimy musimy
stworzyć sobie nowy plik który się nazywa kropka env
i w środku tego pliku możemy stworzyć sobie po prostu jakoś zmienną ta zmienna
zawarta w env nazywa się zmienną środowiskową ponieważ env
to jest skrót od environment czyli environmental variables po
angielsku datocms możemy sobie na przykład to nazwać albo na przykład api
datocms równa się i tutaj string
i wklejamy nasz token zapisujemy
plik i teraz wszędzie w node wszystkie te pliki
gatsby tutaj które należą do konfiguracji należą do node tutaj
jakby odpalany jest node to jest odpalany w naszej konsoli i wszędzie w node możemy
dostać się do takiego obiektu który się nazywa process i wewnątrz
tego process będziemy mogli dostać się do env jednak żeby
do tego doszło to musimy jeszcze pobrać jeden mały plugin do naszego node
właściwie jedną małą paczkę nazywa się dot env jeśli
sobie ją skopiujemy wpisując po prostu npm install do
dotenv a następnie
na samej górze naszego pliku wkleimy po prostu required dotenv
kropka config to
automatycznie node uzyska dostęp do tego pliku env i będziemy
mieć dostęp do tych zmiennych które tam zawarliśmy tutaj w tej
linijce nie ma żadnej magii to jest po prostu zwykły require czyli ten starszy sposób
na importowanie modułów do javascriptu można
by było to zrobić równie dobrze tak const dotenv równa się require i
później dotenv kropka config ale
ten poprzedni sposób jest po prostu szybszy bo zajmuje jedną linijkę a i tak do niczego
innego niż do po prostu skonfigurowania tego env file nie potrzebujemy tej
paczki więc wystarczy taki oto zapis i teraz jeśli
już skonfigurowaliśmy nasz dotenv i mamy dostęp do naszej zmiennej
to wystarczy że skopiujemy sobie jej nazwę i
wpiszemy process env kropka
api datocms i teraz żeby nie było zrobimy sobie jeszcze gatsby
clean to jest dość poważna zmiana w gatsby więc zawsze wolę sobie wyrzucić ten
cashe i public i wrzucić po prostu wszystko od nowa gatsby develop zobaczymy
co się wydarzy wygląda na to że nasz projekt zbudował się poprawnie więc
teraz przejdźmy sobie do graphql wywalmy wszystko i
spójrzmy co my tutaj mamy po odświeżeniu zobacz że przyszło nam naprawdę
sporo nowych rzeczy tutaj i właśnie mnóstwo z nich jest związanych z datocms
więc teraz spróbujmy sobie na przykład wyciągnąć all dato
cms article nodes spróbujmy
ten o article content i zobacz że ten plugin automatycznie
nam podpowiada te fragmenty i to jest naprawdę świetne bo bez
tego pluginu gdybyśmy posługiwali się jakimś takim surowym pluginem do graphql
po prostu w gatsby to musielibyśmy to pisać a w ten sposób ten
plugin elegancko sobie mapuje to co dostajemy z naszego cms i możemy
po prostu to all fajnie sobie wykorzystać więc teraz
paragraph content heading content image
date naprawdę to jest tak wygodne i
mamy wszystko przejdźmy sobie jeszcze tutaj skopiujmy po prostu to query
które mieliśmy w tym miejscu bo ono było pełniejsze jeszcze miało te pozostałe rzeczy z
artykułu tylko tutaj all articles musimy zamienić na
all datocms article wewnątrz
tego musimy dać jeszcze nodes i dopiero wtedy to
co było tutaj jeśli nam się te nawiasy jakoś tutaj
pokiełbaszą to możemy zawsze kliknąć prettify i wtedy nasze query
wygląda pięknie i znowu coś zepsułem co się teraz wydarzyło musiałem
coś pominąć all datocms article nodes
dziwne
wrzućmy sobie tylko to to działa okej coś tu musiałem zepsuć o
teraz działa możliwe że jakiś tutaj zapodział nam się po prostu nawias
i przestało działać czasami tak bywa można wtedy sobie wyklikać po prostu z tego
panelu po lewej żeby to jednak zaczęło działać wszystko jest okej i
to query możemy wykorzystać teraz wewnątrz na przykład naszego gatsby
node oczywiście tutaj potrzebujemy tylko i wyłącznie informacji
o tym jaki mamy artykuł żeby stworzyć poszczególne strony więc
ja teraz bardzo szybko przepiszę wszystkie nasze artykuły z
lokalnego cms czyli z tych mdx przepisze
je na szybko do datocms żeby można było po prostu zrobić po nich query żeby one wyświetlały
się podobnie jak tutaj może zamiast pięciu po prostu zrobię trzy żeby troszkę przyspieszyć
cały proces ciebie zachęcam do tego samego żeby sobie to po prostu poćwiczyć i przepisać
ja to teraz zrobię na cięciu i wrócimy po tym jak już będę miał to wszystko przepisane
dobra dodałem dwa kolejne artykuły to co jest fajne to zobacz że gatsby
automatycznie wykrywa że zaszła jakaś zmiana w api i ładuje
nam ten nowy content jak później zapodamy sobie znowu query to mamy kolejne
dwa artykuły czyli comfortable bedroom i tidy or messy więc
mamy teraz już trzy artykuły możemy sobie stworzyć z tego coś sensownego spójrzmy
jak to wygląda jak to wygląda tutaj mamy query mamy title i
właściwie do stworzenia stron wystarczy nam tylko ten title więc możemy
sobie skopiować całe to query za chwilę to usuniemy w gatsby node
nie usuwam całego tego query bo później mi się jeszcze przyda więc
tutaj sobie to podmienimy query cms
page okej nawiasy się zgadzają raz
dwa trzy raz dwa trzy mamy teraz trzy artykuły i z
każdego wyciągamy sobie tytuł i teraz z tego tytułu musimy zrobić slug żeby
poprawnie stworzyć adres dla każdej z artykułu i to
nie będzie już takie proste ponieważ nasze artykuły mają tytuły takie że tak powiem dla
ludzi czyli pisane wielkimi literami czyli normalnie ze spacjami
i tak dalej więc możemy sobie stworzyć taką funkcję slugify
albo jeszcze lepiej możemy ją sobie po prostu pobrać z neta ponieważ
jest już coś takiego i nie ma co wymyśleć koła na nowo slugify to jest po prostu funkcja
która podmienia nam takie stringi na takie stringi czyli to o co nam dokładnie
chodzi więc teraz zainstalujmy sobie po prostu nasze slugify
zakładam że to będzie po prostu komenda
npm install slugify możemy
ją sobie pobrać na górze naszego gatsby node zamiast
var używamy const oczywiście i
teraz możemy sobie stworzyć coś takiego przy
każdej iteracji wyciągamy sobie z post nasz
title tylko że o właśnie tutaj też będzie problem bo mamy tak result data
później mamy all datocms article nodes
i reszta już się zgadza i później
w post mamy po prostu kropka title czyli post kropka title
i co my z tym mamy zrobić mamy zrobić slugify
title czyli możemy sobie stworzyć const slugified title
slugify i jako argument dajemy post title
możemy sobie to wylogować i
zobaczyć czy to w ogóle będzie okej czy to będzie działać tutaj
slug możemy dać slugified title tylko że
na razie nasze query nie będzie działać tak jak
trzeba w post js ponieważ tutaj mamy mdx
nadal więc może na tę chwilę sobie po prostu
zakomentujemy to żeby nie wywaliło nam błędu zakomentujemy
sobie to i wtedy to powinno działać dobra
spróbujmy gatsby develop chodzi o to tylko żeby w konsoli
dostać odpowiednie tytuły zobaczyć czy to działa poprawnie możliwe że
nam wrzuci jeszcze jakimś błędem ale może nie zaraz zobaczymy okej
gdzieś odwołuje się do slug tutaj
czyli wylogowało nam pierwsze tidy
or messy a później zrobiło błąd po prostu
bo tutaj już się wywaliło bo odwołujemy się do czegoś czego nie ma więc
musimy zrobić slugified
title i tutaj od razu widzę że jest pewien problem ponieważ mamy wielkie litery
a my nie chcemy więc z racji że slugify zwraca prawdopodobnie
stringa po prostu to możemy zrobić to lowercase i
wydaje mi się że to powinno zadziałać zaraz
zobaczymy jeszcze czy slugify ma może jakiś dodatkowy argument który
można zapodać result
in lower case tak czyli aha okej czyli nie musimy tego robić możemy
podać tutaj obiekt który będzie obiektem z opcjami i w tym obiekcie robimy
lower dwukropek true i życie jest piękne odpalamy
na nowo gatsby develop teraz powinniśmy dostać prawidłowe tytuły a raczej slugi uwaga
mamy tutaj tidy or messy
comfortable bedroom dine and design wszystko się zgadza więc
w tej lekcji udało nam się skonfigurować datocms tak żeby przekazywał do naszego gatsby
dane a w następnej już uporządkujemy sobie sprawy związane z post js
żeby tym razem wyświetlał odpowiednie dane zaciągnięte z cms a nie z naszych mdx