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+
W poprzedniej lekcji udało nam się stworzyć nawigację która
działa która wygląda tak jak w projekcie natomiast pojawia się ona wyłącznie na
stronie index js teraz chcemy to zmienić w poprzedniej wersji gatsby
czyli w jedynce było tak że mogliśmy sobie stworzyć folder layouts a w nim index js
który później został wstrzykiwany do każdej naszej strony natomiast
tutaj gatsby daje nam trochę większe pole manewru jeśli chcemy możemy zrobić
to zupełnie inaczej możemy sobie stworzyć własny komponent który ręcznie możemy dodawać
do każdej ze stron tak jak to było w szkielecie aplikacji mieliśmy tutaj component
layout który oplatał każdą z podstron natomiast istnieje też plugin
który moim zdaniem jest całkiem wygodny i dość fajnie konfigurowalny
trudne słowo nazywa się gatsby plugin layout tak jak już ci mówiłem większość
problemów w gatsby zostać rozwiązana za pomocą jakiegoś pluginu i
tak właśnie jest w tym przypadku teraz zainstalujmy sobie kolejny plugin czyli
npm install dash dash save gatsby plugin layout
on tutaj ma do wyboru dwie opcje albo możemy
stworzyć sobie folder layouts a w nim index js i to właśnie
tam ten plugin będzie szukał w pierwszej kolejności tego layoutu który chciałby wstrzyknąć do
każdej z naszych podstron albo możemy zrobić tak że podamy
mu w options link do konkretnego komponentu który później może sobie
zaimportować i to zrobić natomiast my możemy spokojnie skorzystać
z tej pierwszej prostrzej opcji nie musimy tutaj tego w żaden sposób konfigurować stwórzmy
sobie folder layouts wewnątrz niego index js skopiujmy
sobie zawartość naszego index js ale z folderu pages
czyli stronę główną dywanywywalmy rzeczy
których nie potrzebujemy potrzebujemy tak naprawdę tylko navigation tutaj
możemy to nazwać na przykład layout albo main layout i
żeby zakomunikować że to jest faktycznie strona
główna to znaczy layout główny i
to co potrzebujemy tutaj zaimportować to children ponieważ nasz
komponent layoutowy będzie automatycznie
dodawany do każdej z podstron ale te propsy
children będą zawsze dodawane automatycznie children jak wiesz z
reacta z kursów zawiera po prostu wszystko co znajduje się między
tagami naszego layoutu więc w tym przypadku children
będzie po prostu wszystkim tym co znajduje się w poszczególnym pliku
js w folderze pages jeśli jest to dla ciebie troszkę za trudne
to możliwe że po prostu warto odświeżyć sobie wiedzę z reacta możesz
spokojnie zajrzeć do kursu z reacta znajdujących się na eduweb
okej stworzyliśmy już nasz layout więc teraz
jedyne co nam zostało to dodanie gatsby plugin layout
tutaj do deklaracji gatsby plugin layout bez żadnej
dodatkowej konfiguracji w ten sposób powinno nam to wystarczyć wejdźmy
jeszcze do strony głównej usuńmy navigation i zróbmy tutaj na
przykład no nie wiem cokolwiek napiszemy hello hatta bo
tak się nazywa nasza stronę to jest tylko na chwilkę gatsby
develop sprawdzimy czy nasz layout został dodany do każdej z podstron na
razie wygląda na to jakby plugin działał poprawnie żadnego błędu
tutaj nie mamy jak widzisz
pojawiło się hello hatta jesteśmy na stronie głównej przejdźmy do articles do
about do gallery i do contact page
treść się nie zmienia ponieważ na każdej mamy
to samo po prostu przykleiliśmy to natomiast zauważ że linki
się zmieniają articles about galleriiy i contact więc nasze
linki działają nasz layout jak najbardziej działa poprawnie możemy przejść do dalszego
developmentu a kolejną rzeczą którą chciałbym zrobić to na przykład dodac globalne style
tak aby nasze fonty w tym miejscu były po prostu fontem montserrat
a nie fontann domyślnym więc teraz możemy stworzyć sobie w naszym
assets kolejny folder ja zazwyczaj style globalne dodaję właśnie do
folderu styles tutaj tworzę sobie global styles kropka js
musimy zaimportować create global
style ze styled components i teraz stworzymy
sobie zwykły styled component więc tutaj możemy to nazwać na przykład
global style create global style i
wpisujemy tutaj wszystko to co chcemy aby było właśnie globalne żeby było globalnym stylem
ja przygotowałam sobie wcześniej taki style sheet on jest bardzo krótki możesz
go sobie przekleić po prostu z tego brancha w kursie na szybko
tylko mówię tutaj co zostało zawarte więc box-sizing dla całego
html mamy border-box wszystkie elementy dziedziczą właśnie
tę właściwość od html to jest taka dobra praktyka którą warto zastosować
więc to taki tip ode mnie później body po prostu ma zresetowany margin
font-family mamy montserrat button osobno również ma montserrat
ponieważ font family dla batonów zawsze osobno jest stylowany do tego mamy cursor
pointer zawsze na buttonach żeby po prostu to było na pewno padding
również mamy 0 i dla ul mamy również zresetowany padding
i margin więc teraz w naszym navigation możemy sobie usunąć to
co mieliśmy w tym miejscu to będzie nam już niepotrzebne na chwilę nasze
menu będzie wyglądać troszkę dziwnie ale to nie potrwa długo ponieważ teraz w
wyeksportujemy sobie z tego pliku jako export default
globalstyle zaimportujemy teraz ten komponent
wewnątrz layout w
taki sposób musimy jeszcze tylko zaimportować do
pliku akurat tutaj nie zadziałał auto-import
i po odświeżeniu nasza strona ma już poprawne
fonty jedyne co jeszcze bym zmienił jak sobie przejdziemy tutaj to
zobaczymy że ten padding tutaj wewnątrz naszej strony ma co
najmniej 85 pikseli po lewej stronie więc
możemy w body zrobić sobie padding od
góry 125 od boku 85 od
dołu 0 okej już
widzę że będzie trochę za dużo i teraz jeszcze
tylko nasza nawigacja musi dostać position absolute dobra
i w ten sposób nasz layout jest gotowy do dalszej
pracy więc kolejnym krokiem na naszej
road mapie jest stworzenie strony głównej razem z tym obrazkiem ale
żeby to zrobić muszę ci najpierw wyjaśnić w jaki sposób gatsby obsługuje dane
w jaki sposób zaczytuje te dane skąd jest zaczytuje czym jest graphql
i dlaczego graphql jest tak bardzo ważny w gastby ale o tym wszystkim opowiem
ci już w następnym rozdziale tego kursu
Globalne style · 7 min
import { createGlobalStyle } from 'styled-components';
const GlobalStyle = createGlobalStyle`
html {
box-sizing: border-box;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
body {
margin: 0;
padding: 80px 65px 0;
font-family: 'Montserrat';
}
button {
padding: 0;
cursor: pointer;
font-family: 'Montserrat';
}
p {
font-size: 16px;
}
ul {
padding: 0;
margin: 0;
}
`;
export default GlobalStyle;