Projekt aplikacji SaaS
8 godz. 8 min · Next.js · Full-stack i Programowanie
Daniel NoworytaFull stack DeveloperNaucz się tworzyć bezpieczne systemy uwierzytelniania i autoryzacji, korzystając z Clerk. Pokażę Ci, jak to robić krok po kroku, aby Twoje aplikacje były bezpieczne i profesjonalne.
Zrozumiesz, jak skutecznie i bezboleśnie połączyć swoją aplikację Next.js z bazą danych PostgreSQL na DigitalOcean. Pokażę Ci, jak używać Prismy, aby ułatwić ten proces.
Dowiesz się, jak zarządzać routingiem i nawigacją w swojej aplikacji, aby użytkownicy mogli łatwo i intuicyjnie poruszać się po Twojej stronie.
Pokażę Ci, jak z łatwością wdrożyć swoją aplikację na Vercel, jednym z najpopularniejszych środowisk hostingowych dla aplikacji Next.js.
Nauczysz się zarządzać stanem aplikacji i jak wykorzystać server actions w praktyce, co pozwoli Ci na tworzenie bardziej zaawansowanych i dynamicznych funkcji.
Ten kurs jest dla osób, które już mają pewne doświadczenie z JavaScript i chcą zgłębić swoje zrozumienie Next.js. Zakładamy, że znasz podstawy TypeScript, TailwindCSS, ale nie potrzebujesz doświadczenia z Next.js - wszystko wyjaśnię Ci od podstaw!
Teraz przejdźmy do stworzenia komponentu z linkiem w naszym barze tutaj.
Jeżeli spojrzymy na design dostarczony
nam, to widzimy, że każdy link ma jakąś ikonę.
Jeżeli jest on aktywny, to ta ikonka generalnie rzecz biorąc inny
kolor też ma inny kolor, bo ekran ma inny kolor.
Tutaj po prawej stronie mamy jakiś border.
Można powiedzieć o takim kolorze.
Jeżeli ta ikonka nie jest aktywna, to widzimy, że to jest typ ikonki field.
Także możemy przypuszczać, że musimy sobie
znaleźć jakieś ikonki, które mają filter regular.
Ja tak się składa, że generalnie do
większości swoich projektów wykorzystuję remiks A Icons.
To jest platforma z open source owymi
ikonkami, dlatego w tym momencie możemy ją wykorzystać I
jeżeli chodzi o instalację, to tak naprawdę instaluje się to bardzo prosto.
Wystarczy, że zrobimy npm Install Remix Icon w naszym w naszym projekcie.
Przejdźmy teraz do naszego terminala U.
Pijemy tą aplikację, zrobimy sobie clear
i w tym momencie npm Install Remix Icon minus Save.
Zapisujemy sobie te ikony w naszym projekcie.
PM Randy Restartujemy nasz projekt.
Wróćmy do edytora kodu.
W tym momencie będziemy potrzebowali
wyodrębnić jednak ten link i przekazywać jako propsy.
Myślę, że najlepiej byłoby przekazywać nazwę, ikonka nazwy, ikonki
i tak naprawdę tekst, który musimy użyć tutaj jako jako tekst w naszej nawigacji.
Przejdźmy teraz do
stworzenia takiego komponentu lub wejdźmy sobie tutaj do komponent i
zrobimy sobie komponent o nazwie App na link Test X i w tym momencie eksport.
I fold function na link i standardowo zrobimy funkcję function.
Jeżeli chodzi o logikę samej funkcji, to kilka rzeczy będzie tutaj potrzebnych.
Generalnie musimy odczytać na którym aktualnie użytkownik się
znajduje, żeby móc zastosować odpowiednie style, tzn.
żeby móc powiedzieć czy akurat ten endpoint jest aktywny czy nie.
Dlatego teraz zróbmy sobie tutaj const name.
I jako paw nam weźmiemy sobie z ust huk.
To jest huk.
Wystarczy nam next navigation.
Już widzimy, że używamy huku.
Dlatego też prawdopodobnie musimy zrobić ten komponent jako klient.
Klient Komponent, czyli klient.
Zapisujemy to sobie i tutaj jeżeli chodzi o to czy
dany komponent jest aktywny to będziemy musieli sprawdzić aktualny PA name
z tym co podane jest w naszym propsie jako href.
Generalnie rzecz biorąc ten app na link.
Jeżeli spojrzymy na typ props, które będziemy tutaj przekazywać no
to będziemy mieli nasz interfejs, rozszerzymy sobie i app na link props.
To są propsy, które będziemy przekazywać w naszym przypadku.
Chcieliśmy tutaj przekazywać icon name
w postaci string i chcieliśmy przekazywać też tekst w postaci string.
Do czego będzie to przydatne?
Otóż text to jest to co będzie wyświetlane jako text.
A jeżeli chodzi o ikonę to to
nazwa ikonki, która będzie użyta w danym w danej pozycji w menu.
Natomiast jeszcze zanim to zrobimy wróćmy
do naszego layoutu i sprawmy, żeby te te menu było zaraz pod tym elementem u góry.
Wróćmy do naszego layoutu.
Jeżeli chodzi o App Marketing, tu możemy już zamknąć.
I tutaj ten link i ten nasz musimy opakować w jednego diva.
Tak sprawimy, że generalnie te dwie rzeczy
będą tak naprawdę leżały koło siebie w naszej hierarchii.
No i zapiszemy to sobie.
Sprawdźmy, czy mamy naszą aplikację wysportowaną.
Nasza aplikacja jest wystartowała na.
Wróćmy do Visual Studio.
Kod jeszcze raz mamy div na link jak najbardziej jest ok.
I to musimy jeszcze zrobić.
Oczywiście klasę.
Flex i flex Cool.
Zapisujemy to sobie, odświeżamy naszą stronę.
No i już.
Jak widzisz mamy tutaj nawigację zaraz po tym.
Teraz możemy zająć się sterowaniem tego poszczególnego elementu.
Ja sobie wezmę taki podstawowy element przekopuje tutaj return.
Mamy ten link.
Oczywiście musimy to sobie zaimportować tutaj z biblioteki Next.
I teraz tak w tym miejscu będziemy
wykorzystywać proxy, które będziemy podawać do tego linku.
Czyli to będzie nasz tekst.
Props.
Tekst.
W tym momencie przekazujemy props i to jest o typie app na link props.
Jeżeli chodzi o href no to props.
Chcielibyśmy tutaj przekazać.
Natomiast jest jednym problem.
Nie chcielibyśmy tutaj kopiować procesów, które natywnie dostaje
komponent Link, dlatego też możemy sobie zaimportować link.
Props tutaj z next link.
Jest to eksportowana wartość i tutaj
możemy rozszerzyć nasz interfejs extends link proxy.
Tak sprawimy, że generalnie rzecz biorąc
będziemy mieli już do czynienia z tym, że będziemy mogli
sobie użyć tutaj w naszym href jako props href.
Zapisujemy to sobie.
Tutaj, jako że jest wymagany typ generyczny, dlatego możemy dodać anon.
I w tym momencie już mamy statystycznie o typowany nasze propsy.
Jeżeli chodzi o dalszą część to na pewno href mamy za sobą.
Będziemy potrzebowali.
Teraz po props text będziemy potrzebowali wyświetlić naszą ikonkę.
Czyli prawdopodobnie musimy sobie tutaj owinąć nasz props text w tak.
Łatwo zamienimy na wartość.
Jeżeli chodzi o przed tym podziałem powoli
miejsce na ikonkę to będzie tak i na razie zostawimy sobie to w taki sposób.
Bo jeżeli chodzi o remix Icons to wszystkie to one przychodzą.
Jeżeli chcielibyśmy użyć np.
Arrow Ride App, no to musimy użyć
i o odpowiedniej klasie i to jest stałe dla komponentów właśnie z Remix Icons.
I tutaj generalnie jest nazwa.
Naszej ikonki.
Tutaj jest typ naszej ikonki czyli lin albo filtr.
Jeżeli chodzi o ikonki typu filtr.
Możemy sobie sprawdzić nasze wariacje.
Tutaj mamy fill, jest fill, czyli jest line albo fill.
I w tym momencie jeżeli chodzi o naszą
ikonkę, no to będziemy musieli tak naprawdę popracować nad klasą, żeby
dynamicznie wbudowany został tutaj dla nas klasy i co będziemy potrzebować.
Generalnie otwieramy sobie dynamiczny
string i to co mówiliśmy R i jest stałe dla wszystkich ikonek w paczce Remix Icons
i tutaj potrzebujemy wyciągnąć Icon name Jeżeli będziemy mieli już ten icon.
No to tutaj teraz w zależności od tego czy link jest aktywny czy nie, będziemy
musieli odpowiednio dodawać fill albo line.
Czyli w przypadku kiedy jest is active i z active musimy sobie dopiero stworzyć.
Natomiast tutaj
jeżeli jest aktywny zrobimy sobie fill, a jeżeli jest link nieaktywny.
Zrobiłem sobie line i to pozwoli nam już dynamicznie budować sobie te ikonki.
Natomiast jeżeli chodzi o logikę i active to tutaj wykorzystamy.
Paw name is active to się równa i to sprawdzamy.
Jeżeli name jest równy props.
Chlew lub paw prawny.
Możemy sobie zmienić na camel case
i to w drugim przypadku jest równe propsy i kropka pewny.
Tutaj będziemy mieli problem, bo oczywiście nie istnieje.
Natomiast możemy sobie tutaj zmapować ten typ, zrobić to jako urlop i już.
W tym momencie mamy prop is active,
który powinien nam wyświetlać nasze odpowiednie ikonki.
Teraz jak przejdziemy sobie tutaj do
naszego layoutu, no to spróbujmy wykorzystać nasz nowy komponenty.
Zobaczymy w jaki sposób jest to tutaj wyświetlane.
Jeżeli chodzi o ikonki to nazwy tych ikonek już się podaję.
Ja sobie sprawdziłem wcześniej, żeby też nie tracić dużo czasu.
Tutaj sobie tylko zamienimy te nazwy na nasz app na link to jest nasz app link.
No i oczywiście potrzebuję kilku jeszcze dodatkowych rzeczy.
Generalnie potrzebujemy icon name i w przypadku Dashboard będzie dashboard.
Jeżeli potrzebujemy text tak jak w przypadku Dashboard text to będzie to co
mamy tutaj, czyli możemy sobie to po prostu wyciąć, wkleić to miejsce i tutaj
zrobić self clothing tak żeby nie musieć przekazywać żadnego children do środka.
Zrobimy sobie na tej samej zasadzie tutaj, czyli tutaj.
Najpierw icon name.
Potrzebujemy.
W przypadku subskrypcji będzie File Text.
Jeżeli chodzi o tekst to oczywiście
są w skrypcie tak zapiszemy self close tak zamkniemy z kasujemy to co mamy.
Tutaj zapiszemy sobie naszą logikę.
Sprawdźmy teraz naszą stronę jak to wszystko wygląda.
Odświeżyłam ją i póki co jeszcze nie widzimy za bardzo tutaj żadnych zmian.
Jeżeli chodzi o bazowe style to na pewno będzie flex, na pewno będzie WiFi.
Zapiszemy to sobie Już na pewno będzie tutaj Items Center.
I na pewno potrzebujemy jakiś klub zrobić.
Jeżeli chodzi w naszym przypadku niech to
będzie GAP na 2 x ustawiony na 8 i p y na 4.
Już odsunęły się te dwa elementy.
Sprawdźmy, czy nasze i tak naprawdę są tutaj.
Jest coś renderowane, natomiast tak
naprawdę nie widzimy tutaj jeszcze naszej ikonki.
Zanim sobie jednak naprawimy sytuację z
naszymi ikonkami, zmieńmy tutaj klasę na font i pod.
Tutaj symbol powinno się pojawić.
Sprawdźmy teraz te ikonki dlaczego nam się nie wyświetlają.
Póki co
sprawdziłem jeszcze instalację Remix Icon i oczywiście musimy sobie jeszcze dodać w
naszym głównym layoucie import styli, żeby one były dostępne w naszej aplikacji.
Dlatego przejdźmy teraz do głównego layoutu naszej aplikacji
i tutaj, gdzie importujemy globalne style CSS, możemy też zaimportować remix Icon.
Już w tym momencie ikonki są jak widzisz dostępne.
Przejdźmy teraz dalej do sterowania
tego komponentu, szczególnie związanego z naszym z naszym linkiem.
Bo generalnie rzecz biorąc, jeżeli ten
link jest aktywny, potrzebujemy widzimy, że już File Line się zmienia.
No bo jeżeli przejdziemy na subskrypcję,
to już ikonki się zmieniają, to znaczy, że ten list active jest poprawny.
Natomiast musimy to jeszcze wykorzystać
tutaj w logice związanej z naszymi stylami i żeby móc budować style.
Jeżeli chodzi o kondycje, czyli jeżeli coś jest prawdziwe to aplikujemy taki styl.
Mamy bardzo fajną paczkę, która się nazywa Cell X.
Teraz sobie zainstalujemy tą paczkę w naszym w naszym projekcie npm Install
Cells X Zainstalujemy paczkę, znowu odpalimy nasz serwer.
Wróćmy teraz do naszego edytora kodu
i tutaj w tym momencie będziemy potrzebowali nowej wartości.
Musimy to rapować.
Musimy tutaj wywołać funkcję Cells X i funkcja.
Cel Ethics jest funkcja, którą możemy sobie zaimportować bezpośrednio Select X w
naszym projekcie, czyli tutaj Import select x x.
Mamy taką funkcję i teraz tutaj jako
style, które będą kondycyjnie nadawane w razie kiedy będzie
tutaj is active to musimy odpowiednio zmienić style tego buttona.
Czyli sprawdźmy teraz is active
end I tutaj teraz zrobimy sobie tak potrzebujemy border.
Prawą stronę.
4.
Potrzebujemy jak najbardziej
zmienić kolor tego kolorowego border border z img i zróbmy na razie na 400.
Zapiszemy sobie te zmiany.
Na razie nie widać nic.
Sprawdźmy dalej.
Zróbmy sobie BG link, bo jeżeli to jest link aktywny, to tak
naprawdę chcemy mieć tło całkowicie czarne.
I dodatkowo jeżeli chodzi o
kolejną rzecz to chcemy sobie zrobić text z ING i ustawić ten tekst na 50.
Zapiszemy to sobie, odświeżamy naszą
stronę i już mamy odpowiednio aplikowane style kondycyjne w zależności od tego
gdzie jesteśmy w naszej aplikacji aplikacji.
Przepraszam, style aplikują się kondycyjnie.
Jeszcze raz wyjaśnię tę logikę.
Wykorzystujemy bibliotekę CSS X, która
melduje nam style w zależności od tego czy is activ jest true lub false, czyli tutaj
odczytujemy sobie pas, na którym nasz użytkownik się znajduje.
Jeżeli path name jest taki sam jak nazwa,
którą podajemy tutaj prop się czyli ten tekst.
No to sprawdzamy sobie to i aplikujemy w
zależności od tego, czy to jest aktywny paw.
No i jeżeli to jest równe paw z użytego hooka znaczy że jest to tutaj.
W tym przypadku aplikujemy sobie aktywne style dla całego linka.
Natomiast tutaj w tym przypadku style aplikowane są.
Tutaj jest także oś tego czy jest is active czy nie.
Style aplikowane są na ikonkę, czyli tu mamy ikonkę Filtr, tu mamy linię.
Jeżeli przełączy się to już teraz jest Field, a tutaj jest Lime.
Tak wygląda logika komponentu linków w naszej nawigacji.
Teraz przejdźmy tutaj do
tej niższej części, czyli do dodawania nowej subskrypcji i do tego batona z
naszym userem, który jest który widzimy tutaj na naszym designie.
Przejdziemy do budowania tej części i do budowania tej części tutaj poniżej.