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ść. Jeśli przyjrzymy się strukturze naszego projektu i temu jak ten
projekt wygląda, to możemy zauważyć na pewno jedno gołym okiem. Jest
mnóstwo komponentów, które będziemy musieli stworzyć i nie bój się, wiele
z tego kodu przygotuję sam tak, że będzie on możliwy do wykorzystania po prostu
poprzez skopiowanie go z mojego repozytorium, które przygotuje do tego kursu. Nie
ma sensu, żebyśmy każdy komponent po kolei tutaj wystylowali samodzielnie,
wiele z tych rzeczy możesz zrobić po prostu na własną rękę, jako
pracę domową, zachęcam cię do tego. Na pewno wiele rzeczy odkryjesz po drodze, natomiast to
do czego zmierzam w tej chwili to to, że przydałoby się coś takiego
co przypomina, nie wiem, poligon w którym można byłoby
testować te wszystkie komponenty, które byłyby zawieszone w jakiejś takiej próżni
i wyglądałyby one dokładnie tak jak mają wyglądać z aplikacji, natomiast
nie wpływało by na nie nic z poza tych komponentów i na
szczęście powstało takie narzędzie, nazywa się ono storybook, jest naprawdę doskonałe
i zachęcam cię do używania go w każdym większym projekcie, w którym właśnie
powstaje taki nazwijmy to design system. Teraz pokażę ci jak to
wygląda. Storybook to jest po prostu taki, storybook
to nic innego jak taka przeglądarka naszych komponentów, wszystko co możemy zrobić, storybook
to po prostu taka przeglądarka naszych komponentów. Umożliwia ona przeglądanie wszystkich
rzeczy, które stworzyliśmy i dla których stworzyliśmy specjalny plik story, który
dodatkowo jeszcze odpowiednie musimy skonfigurować i umożliwia
on na przykład właśnie zmienianie teł, zmienianie props'ów w czasie rzeczywistym za
pomocą nops'ów tak zwanych i umożliwia naprawdę wiele,
wiele rzeczy. Ostatnio wyszła właśnie piąta wersja tego storybook'a i nie ukrywam, że
dla mnie to też jest nowość, bo ja wcześniej korzystałem z czwórki i parę rzeczy tutaj się
naprawdę zmieniło, więc jestem super podekscytowany tym, że zaraz będzie możliwość,
więc jestem super podekscytowany tym, że zaraz będziemy
mieć możliwość zaimplementowania tego w naszym projekcie. Instalacja
tego na szczęście jest naprawdę bardzo prosta, wystarczy że przejdziemy sobie teraz
do naszego projektu i naszym projekcie wpiszemy npx storybook,
storybook sam wykryje jaki
rodzaj projektu ma obsługiwać, że jest to create-react-app. Dostosuję się
do niego, stworzy całą konfigurację i my po prostu będziemy mogli zacząć
z niego korzystać i to jest cała filozofia. Jak
widzisz podczas instalacji storybook informuje nas o tym, że wykrył, że
nasz projekt to create-react-app i dostosuje do niego wszystko, żeby miało
ręce i nogi, żeby to po prostu działało i kiedy instalacja
dobiegnie końca to możemy zauważyć, że w naszym projekcie porad pojawiło się kilka
nowych rzeczy przede wszystkim ukryty folder, który mamy addons js
i config js. Ten config js będzie dość ważny, ale do niego wrócimy za chwilkę. Pojawiło
się również coś tak jak stories w folderze src i tutaj mamy przykładowe
story właśnie, które zaraz sobie odpalimy jak zerkniemy do package json, to zauważymy,
że pojawił się też nowy skrypt, który się nazywa storybook, więc teraz jeśli
wpiszemy npm start storybook, to
wyskoczy nam jak zwykle jakiś błąd. Zerknijmy o co tym razem chodzi. O ESlinta,
który jest w złej wersji, więc to co muszę zrobić to usunąć package json
log, node modules i zainstalować
wszystko na nowo przez npm install. Wydarzyło się
tak pewnie dlatego, że storybook zainstalował swoją dependencje, która nadpisała dependencje React'a
i przez to takie problemy. Zaraz zobaczymy czy usunięcie package json log
i node modules coś poprawiło, pamiętaj jednak, żeby nie usunąć package
json, ponieważ jest to bardzo ważny plik jego nie ruszamy, okej
paczki zainstalowane podejście drugie npm start npm rems
storybook, okej. Nasz
storybook został zbudowany. Widzimy tutaj button,
który nie jest naszym button'em, to jest taki button zaimportowany z demo storybook'a i mamy
komponent welcome i teraz sprawdźmy, jak to wszystko działa. Mamy
tutaj folder stories, w którym mamy index js i to jest właśnie to
demo, które przed chwilą ci pokazałem. Tutaj są właśnie te button'y, jest tu
Welcome. Mamy jakiś błąd ze ESlint'a, którym na razie się nie przejmujemy,
za chwilkę to sobie do tego dojdziemy, natomiast to w jaki sposób ja chciałbym
skonstruować, to jest struktura plików związanych ze storybook'iem, jest nieco
inna niż ta domyślna konfiguracja nam oferuje, ponieważ tutaj
w configu mamy, że z folderu src importujemy indeks, więc
tylko ten jeden plik, a ja chciałbym, żeby w folderze component's każdy
komponent miał swój plik story, więc tutaj na przykład byłoby button
stories js i tak dalej, więc będzie to nieco bardziej wygodne,
a też te importy, powinny być dużo bardziej zautomatyzowane, a nie tak,
że importujemy tylko jeden plik na tak zwaną pałę wpisany, więc
sprawdźmy sobie teraz konfigurację storybook'iem
i tutaj nawet w konfiguracji właśnie w dokumentacji mamy
taki fragment kodu, który pozwala nam na to, że podajemy
po prostu wyrażenie regularne i na podstawie tego łapiemy
sobie wszystkie pliki, które mają końcówkę js, a w naszym
przypadku będzie stories js, więc teraz odpalimy sobie te
konfigurację, okej i tutaj niedopatrzenie z mojej
strony, front faktycznie mam jest skonfigurowany tak, że mówimy mu słuchaj, znajdź wszystkie pliki,
które mają końcówkę kropka stories, kropka js, więc tutaj
wszystko się zgadza, natomiast w tym miejscu nie chcemy, żeby to było wyłącznie
w folderze stories. Teraz on nam rzuca błędem, ponieważ mówi, że nie może znaleźć takiego
pliku, który się tak kończy. Jak tutaj ten index zmienimy na index kropka
stories kropka js, to on znowu się zbuduje z powrotem, mały
test. Czy on łapie to, jednak nadal mamy problem, ale
on wynika z tego, że stories jest zakopane w src
jeszcze, a my w pliku konfiguracyjnym tego nie uwzględniliśmy, więc tutaj musi być src
stories, okej. Teraz się zbudowało, natomiast
my chcemy, tak jak już mówiłem, żeby to było po prostu w folderach
z komponentami, więc teraz wejdziemy sobie tutaj i wpiszemy
src components i w
ten sposób storybook będzie szukał plików w folderze components, które
się kończą na stories js, więc teraz w następnej lekcji dodamy
sobie pierwsze story, które będzie zawierać nasz button.