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ść, przed nami kolejny ekscytujący dział w tym kursie,
ponieważ właśnie teraz zaczniemy wdrażać API do naszego
frontend'u, ale zanim zaczniemy to robić, to wyjaśnię ci może trochę
czym jest API i w ogóle jak działa backend. Nie jestem co prawda backend'owcem, ale
napisałem dlatego kursu właśnie specjalny backend, który pozwoli nam na zapisywanie
notatek i może zaczniemy od tego, że backend jest napisany
w node js, czyli jest to JavaScript i opiera się o MongoDB
Express i Mongoose. Mongoose to jest taki interfejs do
mongoDB, który pozwala nam na łatwiejsze po prostu zapisywanie danych przetwarzanie
ich i tak dalej. I generalnie to na czym my chcemy się skupić i co
nas najbardziej interesuje jako frontend'downców to endpoint'y, pod które możemy
uderzać nasze zapytania i z których możemy czerpać nasze
dane i tutaj mamy kilka endpoint'ów. Jak widzisz one mają różne metody i
może od tych metod zacznę. Generalnie metod https naprawdę bardzo,
ale te, które nas najbardziej będą interesować to get, którą stosujemy
wtedy kiedy chcemy coś pobrać chcemy coś otrzymać od naszego backend'u. Post,
kiedy chcemy coś wysłać do backend'u, jakieś dane. Put stosujemy
w momencie kiedy chcemy coś zupdate'ować, podobnie zresztą jak patch i delete, to
oczywiście usuwanie jakichś elementów i to tak naprawdę w bardzo dużym
telegraficznym skrócie, jakie mamy metody http i jakie możemy
stosować na backend'ie i pewnie podobnie
jak na frontend'zie zauważasz tutaj, że mamy tutaj ścieżki, które
prowadzą do różnych funkcji i te funkcje powiązane są z jednej strony
z user'em, którego będziemy tworzyć, a z drugiej strony z notatkami, które
również będziemy tworzyć, pobierać, usuwać i tak dalej i z racji,
że nie jest to kurs o backend'ie, to nie będziemy teraz wchodzić tutaj w szczegóły tego
jak działa kontroler, jakie rzeczy tutaj możemy robić, jakich możemy
nie robić i tak dalej. To wszystko możesz znaleźć sobie w folderze backend,
który znajduje się w materiałach do tego kursu. Mamy folder frontend
gdzie znajduje się nasza React'owa aplikacja i mamy też folder backend,
w którym znajdziemy folder nodes i tutaj mamy właśnie ten projekt backend'owy,
który zaraz będziemy konfigurować. Zanim
jednak przejdziemy do konfiguracji, chciałbym ci na szybko przedstawić postmana. Jest
to program, który możesz sobie zainstalować na swoim komputerze i dzięki
postman'owi możesz korzystać właśnie z naszego API w taki sposób, że
stworzony tutaj zostały przeze mnie wcześniej wszystkie ścieżki, do których
będziemy się odwoływać i podając do nich odpowiednie dane możesz
właśnie sprawdzać jak działa nasz backend. Jakie dane nam zwraca, co
możemy się spodziewać po nim i to jest bardzo fajne narzędzie, które właśnie pozwala
nam lepiej zrozumieć jak działa backend, bez konieczności integracji go od razu z
frontend'em, więc teraz przejdźmy sobie przez każdą ze ścieżek po
kolei i zobaczymy co się dzieje kiedy wysyłamy albo odbieramy jakieś
z naszego backend'u. Pierwszą ścieżką jest register user i tutaj możemy sobie stworzyć
nowy, nowego użytkownika, na przykład my user password
niech będzie password raz dwa trzy. Po
tym jak stworzyliśmy naszego użytkownika, dostajemy kod, który informuje
nas o tym co się stało jeśli 201, to znaczy, że coś zostało
utworzone. Jeśli 200 to znaczy, że operacja została wykonana pomyślnie
jeśli 404 to pewnie jak się domyślasz coś nie zostało znalezione. Jeśli
500 na przykład to jest jakiś błąd serwera. To są takie cztery
podstawowe kody, które na pewno warto znać. Mamy jeszcze 403, który mówi
nam forbidden, czyli jakiś dostęp do czegoś jest zabroniony i nie jesteśmy autoryzowani
żeby gdzieś pójść i teraz a propos autoryzacji. Przejdźmy sobie do login
user i tutaj jeśli podamy my user, czyli tego nowego użytkownika, którego
stworzyliśmy to dostaniemy zwrot w
postaci id tego usera i username. Resztą
na razie się nie przejmujemy. Zauważ, że jeśli na przykład wpisał
bym tutaj raz dwa trzy cztery, to dostanę
właśnie forbidden, czyli coś poszło nie tak. Nie zostałem autoryzowany. Teraz
przejdźmy do logout i logout to jest po prostu post, który wysyłamy i
mówimy słuchaj chcemy się wylogować i wtedy backend nam mówi okej, zostaliśmy
wylogowani, więc na przykład jeśli teraz chcielibyśmy dodać jakąś notatkę. Nawet
jeśli skopiujemy sobie to user id, wyślemy
to, to dostaniemy 403, ponieważ nie jesteśmy zalogowani, więc musimy
wrócić do naszego login user, zalogować się ponownie. Wracamy
do naszej notatki, to id jest akurat jest takie samo, ono się nie zmienia, bo to jest id user'a
i wysyłamy teraz naszą notatkę i notatka
zostało utworzona i to co jest ważne i co się przyda nam późniejszym development'ie. Jeśli
wysyłamy naszą notatkę to w zwrotce dostajemy całą
notatkę z powrotem. Informuje nas o tym serwer, że wszystko poszło w porządku,
ale to co jest doklejone do tej notatki to id
notatki i to będzie dla nas bardzo ważne. Teraz wejdźmy sobie do endpoint'a get,
który pobiera nam wszystkie notatki danego usera i jedyne co potrzebuje żeby to
zrobić to id tego usera i faktycznie mamy
dwie notatki, które przed chwilą utworzyliśmy. Jeśli stworzylibyśmy
sobie notatki, które mają jakiś inny typ. Załóżmy, że teraz to zrobimy, tutaj
sobie wpiszemy notes, pojawia się nowa notatka
notes, teraz jak wejdziemy sobie do Get All Notes to mamy ją nową tutaj, ale
mamy taki endpoint, który bardzo nam się też przyda w development'ie, który
pobiera nam notatki wyłącznie z jednego typu i użyjemy go właśnie w tych
poszczególnych widokach twitters, notes i articles. I tutaj, jeśli teraz podamy
twitters to dostaniemy w zwrotce tylko dwie notatki, a nie tam trzecią
notes, którą utworzyliśmy i faktycznie one mają typ
twitters. Jeśli natomiast skopiujemy
sobie id jakiejś notatki i wejdziemy do Get Single Note, podamy
tym razem nie, podamy tym
razem nie w body, nie w json'ie, nasze dane, ale tutaj jako parametr, w naszym
linku, to
po id notatki backend nam znajduje tą notatkę i pokazuje jak
ona wygląda. Podobnie zresztą możemy ją usunąć. Jeśli teraz wejdziemy sobie tutaj
i powiemy delete, podając parametr w
url'u, to dostaniemy zwrotkę, że okej,
notatka została usunięta i teraz mając tę samą notatkę na Get Single Note, jeśli
jeszcze raz ją pobierzemy to dostaniemy 404, ponieważ ona już nie istnieje. Podobnie
zresztą tutaj. Tak więc tak wygląda nasze API,
jest bardzo proste i na pewno jest pełne dziur. No niestety nie
specjalizuje się w backend'zie. Natomiast udało mi się napisać taki backend, który w zupełności
nam wystarczy do naszego kursu, on nie będzie może mistrzostwem, jeśli chodzi o zabezpieczenia. Jest
tutaj kilka takich obejść, które po prostu mają działać, ale spokojnie.
Damy sobie z tym radę. Jedyną różnicą którą warto
tutaj zaobserwować jest to, że czasami wysyłamy nasz request
w postaci json'a, a czasami
wysyłamy go w postaci zwykłego linku, gdzie jako parametr podajemy tutaj
jakąś wartość, więc to warto zapamiętać bo w zależności od tego jaki
to będzie endpoint, to różnie będziemy wysyłać nasze dane. W następnej
lekcji skonfigurujemy backend na twojej maszynie.