w Praktyce
6 godz. 51 min · ReactJS · Full-stack i Programowanie
Adam RomanskiFrontend developer & YouTube CreatorNarzędzia typu ESlint, Prettier, Husky czy lint-staged niezmiernie pomagają nam w pracy. Problem jednak polega na tym, że ich konfiguracja bywa kłopotliwa. W tym kursie dowiesz się, jak poprawnie skonfigurować te narzędzia, tak, aby nie wchodziły ze sobą w konflikty i pomagały nam pisać lepszy kod.
Brzmi jak zły pomysł? Wcale nie! CSS in JS to rewolucyjne podejście, które pozwala nam tworzyć style bezpośrednio w komponentach. Dzięki bibliotece Styled Components możesz wpływać na ich stan, wygląd i wiele innych rzeczy. To niezwykłe narzędzie, wprowadzające powiew świeżości dla ludzi zmęczonych czystym CSS.
Dokumentowanie wyglądu i zachowania naszych komponentów bywa kłopotliwe. Jeśli jednak użyjemy odpowiednich narzędzi, staje się banalne! Storybook w połączeniu z podejściem atomic design pozwoli nam na stworzenie świetnie udokumentowanych komponentów.
React w Praktyce nie byłby... praktyczny, gdyby nie pokazanie tego, w jaki sposób rozwiązuje się problemy z layoutem aplikacji. Sidebary, szablony, powtarzalne komponenty – to wszystko poznasz w tym kursie.
Tworzenie store, czyli warstwy z danymi w naszej aplikacji dla wielu bywa wyzwaniem dość trudnym. Wynika to często z tego, że przykłady Reduxa bywają niepraktyczne. W tym kursie dowiesz się, w jaki sposób działa Redux – zaczniemy od podstaw, a skończymy na rozbudowanej strukturze danych. Dzięki temu zobaczysz, że nie taki Redux straszny jak go malują.
Aplikacja frontendowa bez backendu może istnieć, choć jej możliwości będą zdecydowanie ograniczone. A już na pewno będzie ona miała kiepską pamięć. Dlatego w tym kursie stworzymy lokalną wersję backendu połączoną z MongoDB na mLab. W ten sposób będziemy mogli dłużej przechowywać dane zapisane w naszych komponentach.
O testach można mówić wiele. To niezwykle rozległy temat, dlatego zanim zaczniesz je pisać na poważnie, chcę Ci pokazać jak możesz poćwiczyć podstawowe rzeczy. Poznasz narzędzie JEST, które odpowiada za uruchamianie testów, oraz wprowadzę Cię do react-testing-library, jednej z najpopularniejszych bibliotek do testowania aplikacji reactowych.
Ten kurs przeznaczony jest dla osób, które lada dzień będą aplikować na stanowiska juniorskie jako React developer. Zawarłem w nim wiele aspektów pracy z React, które zdarzają się w prawdziwej pracy. Ponadto skorzystać mogą z niego osoby, które znają inny framework JS i chcą nauczyć się Reacta, jednak kursy od podstaw są dla nich zbyt proste.
16.8.x
Cześć, skoro już wiesz jak tworzyć styled-components i w jaki sposób możemy wpływać na
ich wygląd, na ich zachowanie poprzez właśnie dodawanie propsów czy to bulian'ów czy
takich przechowujących wartość to teraz czas, żeby pokazać jeszcze jedną
rzecz związana z API styled-components, czyli z tą biblioteką, która
pozwoli nam na stworzenie globalnych stylów, które będą aplikowane do wszystkich
widoków, które stworzymy w naszej aplikacji i możemy to osiągnąć poprzez dodanie
funkcji createGlobalStyle i następnie na podstawie właśnie takiego
stworzonego komponentu wykorzystującego te funkcje możemy osadzić go
w DOM'ie, więc teraz zaimportujemy sobie to createGlobalStyle
i żeby to zrobić stworzymy osobne folder w folderze src nazwiemy
go theme. Plik nazwiemy GlobalStyle
js, tutaj zaimportujemy tę
funkcję oczywiście ze styled-components i teraz
jedenyne, co musimy zrobić to stworzyć component, który
może na przykład nazywać się GlobalStyle i tym
miejscu możemy zacząć stylować wszystkie rzeczy, które chcemy żeby były właśnie globalne,
jeśli chodzi o style, więc na pewno użyjemy universal selector, zaaplikujemy
go również do before i after i powiemy, że box-sizing
to musi być border-box, ta właściwość sprawia, że cały
nas layout po prostu będzie zachowywał się dużo bardziej przewidywalny sposób. Dodatkowo
jeszcze musimy zaimportować sobie nasz font montserrat. Możemy
to zrobić poprzez wybranie tutaj font'ów Google Fonts'ach. My
w naszym projekcie używamy dwóch stylów, czyli
like i semibold i za importujemy
je poprzez ten kod CSS, normalnie w normalnym CSS'ie
nie byłoby to zalecane jednak przez to, że w style components
współdziałają z webpack'iem i tak dalej, to to nie jest taki zwykły import,
który po prostu będzie ładowany tam dynamicznie tylko podczas budowania
projektu zostanie to z optymalizowanie, także o to się nie musimy martwić. Kopiujemy
sobie ten import wklejamy go tutaj i
teraz możemy w naszym body powiedzieć font-family
Montserrat i damy jeszcze zapasowy
sans-serif. Dodatkowo zastosujemy tutaj takie podejście,
które się nazywa happy rems i być może już obiło ci się to uszy
ale może być też tak, że będzie to dla ciebie totalna nowość. Pewnie
kiedyś gdzieś widziałeś lub widziałeś, że mamy coś takiego kiedy
wykorzystujemy rems, że chcemy powiedzieć na przykład font-size i ten
font'size ma jakieś absurdalny rozmiar
typu jakieś po prostu po przecinku milion rzeczy, które są totalnie
nieczytelne i trzeba to sobie liczyć w głowie, nawet zwykły font-szie, jeśli
chcemy żeby miał 17 pikseli, no to skoro rem
wynosi 16 pikseli w przeglądarce domyślnie to teraz żeby
ten font miał 17 pikseli no to musimy to po prostu sobie przemnożyć,
policzyć przekonwertować, żeby zobaczyć, że na przykład jest
o jeden jeden pięć rem, coś takiego. W każdym razie
liczenie tego jest po prostu nieprzyjemne, jest nielogiczne jest
po prostu najgorsze, jeśli chodzi o development. Jest
nieprzewidywalne, trudno to zapamiętać i żeby tego uniknąć można
zrobić coś takiego happy rem to na tym że font-size
dla naszego html'a ustawiamy na 62,5% co
oznacza, że remy teraz będą wynosić równe wartości, czyli
w tym przypadku 1 rem będzie wynosił 10 pikseli
dokładnie. Przez tom że zmniejszyliśmy tutaj zamiast 100 procent,
które wynosi 16 pikseli mamy 62,5%,
które wynosi 10 pikseli i teraz
ktoś może powiedzieć dobra roman, ale teraz sprawiłeś, że domyślą
wielkością w przeglądarce będzie 10 pikseli, czyli zmienimy
wszystkie style na stronie zmniejszając font, więc
możemy temu zapobiec robiąc coś takiego, font-size
1,6 rem i to
co tutaj zrobiliśmy to tak, tutaj ustalamy wielkość jednostki rem na 10
pikseli, a tutaj mówimy dobra, ale nadal chcemy, żeby bazową wielkością
fontu w przeglądarce było 16 pikseli, a więc 1,6 rem
po tych zmianach, które sprowadziliśmy tutaj, wynosi 16 pikseli i to
jest o tyle dobrze, że teraz za każdym razem kiedy będziemy chcieli nadać jakąś wielkość obiektom
zależnym od rem, na przykład jakąś szerokość i będziemy
chcieli, żeby to miało 25 pikseli, to nie będziemy musieli nic przemnażać
przez te 16 pikseli bazowych, tylko możemy wpisać 2 i 5 rem i
na tym właśnie polega tak zwane happy rems. Możesz
to sobie wygooglać, też jest kilka artykułów o tym bardzo ciekawych. Jest to bardzo
fajne podejście, które też tak właśnie racjonalizuje cały ten development jeśli chodzi o używanie
tych rozmiarów i to tyle jeśli chodzi o tworzenie naszych globalnych stylów, więc
teraz po prostu musimy wyeksportować sobie ten komponent, który stworzyliśmy, globalstyle,
a następnie zaimportować go w naszym root'owym
widoku. Pamiętaj,
że mamy już absolutnie ścieżki, więc możemy po prostu wpisać theme globalstyle,
a następnie wykorzystać ten komponent jako pierwszy komponent w najbardziej
zewnętrznym widoku, czyli tym root'owym widoku, który będzie przechowywał wszystkie
inne widoki i będzie właśnie takim pierwszym dzieckiem tutaj, który zostanie
wstrzyknięte i dlatego te style, które tam stworzyliśmy będą zaaplikowane
do wszystkich elementów naszej aplikacji. Teraz sprawdźmy czy to
działa i faktycznie, w font'cie jest Montserrat,
musimy zmienić tylko ten button tutaj, bo wygląda okropnie nie mogę
na niego patrzeć. To był tylko test, więc umówmy się o, niech
wygląda tak jak trzeba. Możemy jeszcze dodać jedną właściwość, którą ja zawsze
dodaje. Wtedy fonty wyglądają dużo lepiej, nazywa się to font antialiasing
i zawsze wchodzę na tę stronę,
po prostu kopiując te dwie właściwości i wtedy fonty, które
na przykład są cienkie faktycznie wyglądają na cieńsze niż byłyby kiedy
byśmy tego nie zaaplikowali tutaj w tym miejscu i z racji, że nasze
style zostały poprawnie zaplikowane i stały się globalne to teraz
możemy przejść do kolejnej lekcji.