dla Początkujących
6 godz. 26 min · JavaScript · Full-stack i Programowanie
Adam GospodarczykProgramowanie to szeroka dziedzina, która nieustannie się rozwija. Rozpoczynając naukę możemy opierać się głównie na wskazówkach bardziej doświadczonych osób, bądź autorach kursów i nauczycielach. W praktyce najważniejsze na początku jest dobre zrozumienie tego, czym jest programowanie, jakie możliwości daje oraz jakie możemy wybrać ścieżki rozwoju. W tym kursie spojrzymy na programowanie z szerokiej perspektywy, dając Ci solidne podstawy do dalszej nauki.
To kolejne trudne pytanie, na które nie ma jednoznacznej odpowiedzi. Dobra wiadomość jest taka że języki programowania, podobnie jak angielski, niemiecki czy hiszpański mają cechy wspólne. Nie oznacza to że nauka jednego, da Ci dostęp do wszystkich ale poznasz ogólne mechanizmy, które spotkasz w niemal wszystkich pozostałych technologiach. W tym kursie skupiamy się właśnie na takich obszarach, opierając przykłady o obecnie najpopularniejszy język jakim jest JavaScript.
Być może zastanawiasz się jak dokładnie wygląda praca programisty? Czym różni się front-end od back-endu i czy wysokie umiejętności analityczne są wymagane niezależnie od obszaru programowania, którym się zajmujemy? Dodatkowo samo zostanie programistą to tylko początek drogi. Możliwości jakie przed nami stoją nie tylko są ogromne, ale również nieustannie się rozwijają, stawiając przed nami nowe wyzwania.
Ten kurs podzielony jest na dwie części - teoretyczną, która przedstawi Ci szerokie spojrzenie na programowanie oraz praktyczną, w której samodzielnie będziesz w stanie przekonać się jak pisać programy z wykorzystaniem języka JavaScript - najpopularniejszego języka na świecie. To, że będziemy przerabiać przykłady w JavaScript, nie stanowi przeszkody a wręcz lepiej przygotuje Cię do pracy z innymi językami jak Python, C# czy C++ lub Kotlin. To wszystko ułatwi Ci podejmowanie decyzji dotyczących dalszej nauki i rozwoju jako programista.
W pierwszych lekcjach części praktycznej kursu dowiesz się jak skonfigurować środowisko pracy wraz z edytorem, w którym przyjdzie Ci pracować. Pomożemy Ci w dobraniu odpowiednich ustawień i wtyczek, które przyspieszą naukę i pomogą w lepszym zrozumieniu podstawowych koncepcji programistycznych. Krok po kroku dowiesz się jak przygotować środowisko i rozpocząć komfortową pracę.
Mimo, że będziemy pracować z JavaScript, posłuży nam on do przedstawienia najważniejszych koncepcji programowania w każdym innym języku. Nie będziemy uczyć się tworzenia stron i środowiska przeglądarki a jedynie przećwiczymy najważniejsze koncepcje języków programowania w środowisku konsolowym. Dzięki temu zdobyte umiejętności z łatwością przełożysz na inne języki jak Python, Java czy Swift, bo wszystkie posiadają identyczne konstrukcje, a poznać należy wyłącznie różnice.
OOP to jeden z najważniejszych paradygmatów programowania, który powinien poznać każdy aspirujący Programista. Dzięki temu będziesz mógł zdecydowanie lepiej zrozumieć możliwości i powiązania klas i obiektów, które tworzą programiści a także pisać kod, który jest prostszy i reużywalny. To koncepcja, którą także wyjaśnimy obrazowo w kursie. Oczywiście, poza teorią w kursie pokażemy Ci przykłady tworzenia funkcjonalnych klas w JavaScript.
Kolejną ważną koncepcją, którą musi znać każdy początkujący Programista jest praca z błędami - innymi słowy obsługa błędów lub debugowanie naszej aplikacji. To niezwykle ważne, bo oszczędzi Ci mnóstwa frustracji oraz wielu godzin rozpoznawania, co w kodzie nie działa poprawnie. Z kursu w praktyce dowiesz się, jak testować swoje aplikacje, łatwo wykrywać błędy i korzystać z narzędzi, które będą je dla nas wykrywać lub automatycznie poprawiać!
Ten kurs przygotowaliśmy tak, aby był fundamentem wiedzy o Programowaniu, którego używamy w wielu naszych ścieżkach na eduweb.pl. To znaczy, że kurs który masz przed sobą rozpoczyna ścieżkę Python, JavaScript, Ruby i wiele innych. Wiemy, że w sieci jest mnóstwo materiałów na temat podstaw programowania i chcieliśmy przygotować wyjątkowy kurs, który da Ci spokój w natłoku wielu informacji w sieci. Zaangażowaliśmy w to najlepszych autorów eduweb oraz naszym zdaniem jednych z najlepszych programistów w Polsce. To, co jest jednak najważniejsze - kurs omawia programowanie bardzo prostym językiem, dzięki czemu jest przystępny dla każdego!
Kurs przeznaczony jest dla osób początkujących, które stawiają swoje pierwsze kroki na scieżce programisty lub programistki. Jednak skorzystają z niego także te osoby, które myślą o nauce programowania w celu uzupełnienia innych umiejętności, na przykład internetowi przedsiębiorcy, freelancerzy, UI/UX i web designerzy. Jeżeli czujesz się zagubiony lub przytłoczony dużą ilością często sprzecznych informacji - ten materiał pozwoli Ci szerzej spojrzeć na programowanie. To z kolei przełoży się na lepsze decyzje, które będziesz podejmować w kontekście swojego rozwoju. W kursie znajdziesz wskazówki i porady dotyczące efektywnej nauki programowania, które pomogą Ci szybciej zdobyć nowe umiejętności i pracę w zawodzie. Najważniejszą z nich jest fakt, że programowanie to dynamicznie rozwijająca się dziedzina, która wymaga od Ciebie nieustannej nauki. Zatem wypracowanie odpowiednich nawyków i technik nauki jest niezwykle istotne, niezależnie od miejsca w którym aktualnie się znajdujesz.
Zobaczyłeś już w jaki sposób można tworzyć
własne moduły a więc dzielić kod na różne pliki,
natomiast teraz pokażę Ci to z czym się
naprawdę na co dzień pracuje w pracy programisty a więc jak korzystać z
zewnętrznych zasobów czyli z bibliotek, które ktoś inny już stworzył. I w tym celu
będziemy chcieli sobie zainstalować taką bibliotekę Moment.js, która pozwoli nam
tutaj w zamówieniu gdzie mieliśmy naszą metodę getDate i sami formatowaliśmy
w taki sposób datę pozwoli nam ją sformatować w prostszy sposób.
Teraz to nie oznacza, że jeżeli mamy do
napisania tutaj kilka linijek własnego kodu to lepiej jest ściągnąć jakąś bibliotekę,
która zajmuje znacznie więcej i skorzystać z jednej z metod, którą ona oferuje
jeżeli ona oferuje np.
100 metod. Tutaj oczywiście trzeba ważyć kiedy
warto coś samemu napisać a kiedy warto skorzystać z gotowego rozwiązania.
Natomiast nie to jest celem tej lekcji aby
rozważać na ten temat tylko to jak zainstalować sobie taką paczkę.
Będę chciał Ci to pokazać i to będzie zależne w różnych platformach, w różnych językach
programowania od tego jakie narzędzia są tam dostępne.
Więc znowu tutaj bardzo mocno nie skupiajmy się na tym jakie mamy narzędzia tylko co
to znaczy, że możemy coś pobrać z zewnątrz i z tego skorzystać.
Dlatego, że i w języku PHP takie narzędzia
będą i w Ruby i w bardzo wielu innych językach. Co jest dla nas najważniejsze,
to w momencie jak sobie zainstalowaliśmy Node,
którego wersję można zwrócić w ten sposób, automatycznie zainstalowało nam się coś takiego
jak npm również nam tutaj zwróci wersję
i jest to właśnie taki Package Manager, który pozwala nam pobierać paczki kodu czyli
właśnie takie moduły, które ktoś już stworzył.
Swoją drogą moglibyśmy stworzyć własne i opublikować je w internecie, ktoś mógłby
również z nich skorzystać. I teraz gdzie możemy szukać takich rozwiązań.
Mamy taką stronę jak npmjs.com i
właśnie tutaj możemy szukać tych modułów, które będą dostępne przez to polecenie npm,
które tutaj przed momentem wpisałem.
I wyszukamy sobie takiej paczki, która nazywa się moment, zauważ, że ona tutaj jest a pod
spodem wszelkie inne, które znaleźliśmy. Przejdziemy tutaj i mamy taką stronę
dokumentacji, która nam mniej więcej mówi jak z tego skorzystać,
chociaż więcej możemy dowiedzieć się
przechodząc na stronę momentjs, którą mamy tutaj link, zaraz tam przejdziemy.
Natomiast najważniejsze jest to jak zainstalować sobie taką paczkę. I w
przypadku npm najpierw musimy utworzyć taki specjalny plik Package.json, który
będzie przechowywał informacje na temat wszystkich zależności naszego projektu.
Robimy to wpisując npm init i jeżeli bym teraz wcisnął Enter to
musiałbym odpowiedzieć na serię różnych pytań.
Jeżeli nie chcę tego robić, chcę to zrobić szybko to dopisujemy coś takiego
i to oznacza, że odpowiadamy yes na każde z pytań, które by się tu mogło pojawić.
Wygeneruje nam się taki plik, tutaj nam pokazało jego treść ale co ważniejsze on jest tutaj.
I teraz jak wejdziemy do tego pliku jest to plik json,
o json nie mówiliśmy w tym kursie ale jest to taka struktura danych, która pozwala nam
przechowywać wartości klucz wartość podobnie jak obiekty w języku JavaScript,
bardzo podobnie to wygląda ale jest to zwykły plik tekstowy,
nie jest to plik języka JavaScript.
Teraz kiedy mamy taki plik, tutaj po prawej
stronie sobie to wyczyszczę, to będziemy mogli ten moment sobie zainstalować,
takim poleceniem jak jest tutaj npm i moment, wpiszmy,
można też wpisać pełną wersję czyli install ale wystarczy skróconą czyli i moment
i to nam z internetu pobierze tę paczkę i zainstaluje nam ją w naszym folderze. Ok, tutaj sobie wyczyszczę,
ona została zainstalowana i to co jest
najważniejsze to do tego pliku Package.json zobacz został dodany taki klucz dependenciec
i tutaj taki kolejny obiekt gdzie mamy nazwę zależności i jej wersję.
To jest właśnie po to, że kiedy nasz
projekt będzie gotowy i przekażemy go komuś innemu, to on będzie mógł mając plik
Package.json wpisać npm install nie podając tutaj moment ani nic innego
i wtedy npm sprawdzi sobie wszystkie
zależności, które znajdują się w tym pliku i pobierze je z internetu.
Natomiast teraz mógłbyś zapytać gdzie się nam ten moment pojawił.
Nigdzie tego nie widzisz. Dlatego, że ja w swoim edytorze tutaj mam wykluczone
pokazywanie katalogu node_modules bo nie jest on dla nas istotny,
natomiast jeżeli bym sobie otworzył ten plik czy ten folder w zasadzie w Finder
czyli na Windowsie będzie to Eksplorator plików, zobaczy ten folder jest tutaj, to
pojawił się tam katalog node_modules. I on właśnie zawiera moment
I tu jest cała ta biblioteka. Nie musisz się martwić tym, że tu jest dużo rzeczy ale
wiadomo, że gdzieś tutaj jest kod, który nas interesuje. Taki jak Moment.js. Czyli
ktoś napisał taką bibliotekę, udostępnił ją i my teraz nie możemy korzystać w ogóle
nie zagłębia się w to jak ona działa pod spodem, bo nie to jest naszym zmartwieniem.
Natomiast to znajduje się właśnie w katalogu node_modules, który jak wspomniałem
wykluczyłem żeby u mnie się nie pokazywał. I teraz jak my będziemy nasz projekt gdzieś
udostępniać to nie będziemy go udostępniać z tym katalogiem node_modules
tylko właśnie z plikiem Package.json i
ktoś, jakiś inny programista z naszego zespołu jeżeli wpisze tutaj
tak jak mówiłem npm install to
automatycznie mu się ten katalog node_modules utworzy i wszystko się pobierze.
Więc zainstalowaliśmy sobie teraz jedną z paczek taką pobranych z Internetu.
No i teraz będziemy chcieli z niej skorzystać
dlatego przejdziemy sobie do pliku, w którym chcemy to zrobić.
Nie musimy tego robić tutaj w tym pliku Index.
Możemy to zrobić tam gdzie jest nam to potrzebne.
Więc ja chciałbym zamienić naszą funkcję
getDate, którą tutaj mieliśmy, która nam formatowała
to w ten sposób na użycie właśnie tej biblioteki moment.js
Dlatego ta biblioteka będzie nam w tym pliku potrzebna
a więc w tym pliku na górze możemy powiedzieć
const utworzyć stałą moment i powiedzieć require,
to co robiliśmy w lekcji poprzedniej,
ale w lekcji poprzedniej w tym pliku podawaliśmy taką ścieżkę
kropka, slash żeby powiedzieć, że
chcemy w tym samym katalogu znaleźć plik order i go zaimportować.
Natomiast jak coś importujemy z tych pobranych z internetu paczek, które
znajdują się w katalogu node_modules to nie musimy tutaj pisać node_modeles itd.
tylko podajemy nazwę,
w tym przypadku moment w ten sposób i node po prostu wie, że jak tutaj nie ma żadnej
ścieżki takiej lokalnej to ma wyszukać paczki moment w katalogu node_modules.
Tyle wystarczy zrobić i okazuje się, że
teraz pod stałą moment będziemy mieli dokładnie to co programista tego modułu
wyeksportował. Czyli tak jak my tutaj w pliku Order.js
na końcu mówiliśmy
eksportujemy tę klasę i jak ktoś sobie zaimportuje
ten plik to mu zaimportujemy właśnie taką klasę.
To tutaj tak samo programista tego momentu
coś wyeksportował dla nas i jak my zaimportujemy poprzez require
mamy to tutaj pod moment.
Dokładnie tak to będzie wyglądać.
I teraz jest dobry czas żeby przejść tutaj na stronę momentjs
i tutaj w dokumentacji znaleźć jak się z tego korzysta. Właśnie na tym to polega, że
jak znajdujemy jakieś rozwiązanie w internecie to możemy w dokumentacji
poczytać jak z tego skorzystać. Nie musimy zaglądać do kodu, który ktoś napisał.
Więc przejdziemy sobie do dokumentacji i tutaj jak się dobrze przyjrzymy to
widzimy, że jak wywołamy to moment to co zaimportowaliśmy, że to jest jakaś
funkcja i ona będzie zwracać jakiś obiekt bo widzimy, że po kropce można się
odwoływać do kolejnych rzeczy. Więc jak po kropce się do czegoś odwołujemy,
to znaczy, że ta funkcja zwraca nam jakiś obiekt.
I teraz możemy do tej metody tutaj, do tej funkcji w zasadzie przekazać datę i to nam zwróci
taki obiekt, na którym będzie wiele różnych metod.
I ja będę chciał odpowiednio to wyświetlić więc zobacz ile tutaj mamy rzeczy,
ale ja przejdę do Display żeby Ci pokazać, że możemy skorzystać z funkcji czy tutaj w
zasadzie z takiej metody format i podać odpowiednio np.
dd mm itd.
I co ciekawe jeżeli podamy sobie dwa razy MM to nam zwróci miesiąc z tej daty z
takim zerem na początku, coś czego my nie mieliśmy.
Jak podamy tylko duże M to nam zwróci
bez tego zera na początku. Więc zobaczmy jakby nam to mogło działać, jak byśmy mogli zastąpić
naszą funkcję getDate, która tutaj była właśnie żeby skorzystała z momentu.
Wiemy, że pod this.date mamy datę i my tą
datę będziemy chcieli do momentu przekazać. Bo jeszcze raz jak zerkniemy na stronę
dokumentacji, jak wywołamy tylko funkcję moment i nic nie podamy
to ona bierze aktualną datę jako tą datę, którą chcemy formować. A ja
chcę tutaj podać konkretną datę. Więc będę chciał tutaj utworzyć sobie, może zróbmy
taką stałą, którą nazwę date, wywołam moment i przekaże tutaj this.date.
Zobacz, ja teraz wywołałem jakąś funkcję,
którą zaimportowaliśmy z paczki pobranej z internetu,
nie wnikam w to co ona robi pod spodem,
wystarczy, że według dokumentacji będę korzystał z jej metod.
Mieliśmy to this.date tutaj a to jest dokładne to co tu
przekazaliśmy, czyli jakąś datę i teraz to po prostu przekazałem do tej
funkcji moment. Cała ta funkcja zwróciła jakiś obiekt,
zapisałem go pod stałą date i ten obiekt
ma różne metody. Jedną z tych metod jest właśnie metoda, zobaczmy sobie tutaj, format.
Tylko, że tutaj ktoś z tego skorzystał
w taki sposób, że od razu moment i od razu format a ja sobie to co moment zwraca
zapisałem w stałej i dopiero będę korzystał z kropka format.
To działa dokładnie tak samo.
Więc zwróćmy tutaj i będziemy chcieli po prostu z tej naszej funkcji getDate zwrócić date
czyli odwołuje się już do tej stałej, która
z momentu coś przechowuje i następnie format
i będziemy chcieli to sformować zgodnie z tą dokumentacją czyli podajemy taki string
i jeszcze raz wrócę sobie tutaj i będę chciał mieć na początku dzień czyli poszukajmy dzień.
Jeżeli chcę mieć dzień i na początku żeby było 0:1 0:2 to dwa razy duże D.
Zapiszmy to sobie, dwa razy duże D, potem chcę mieć kropkę tak jak mieliśmy do tej pory,
potem miesiąc, zrobimy sobie dwa razy duże M
miesiąc i pełny rok,
poszukajmy w dokumentacji jak to wygląda.
Podajemy cztery razy y.
To będzie pełny rok.
I zauważ, że jak się nad tym zastanowimy
my cały czas tutaj korzystamy z języka JavaScript tu nie ma jakiejś specjalnej
magii, po prostu ktoś kto stworzył tą bibliotekę moment pozwala do metody format
przekazać zwykły string. I pod spodem gdzieś analizuje czy tam jest np.
DD i co ma za to podstawić jak to podstawiać itd. tego
w tym kursie nie pokazywaliśmy jak możemy bardziej manipulować na takich ciągach znaków ale
zapewniam Cię, że to wszystko jest możliwe i w języku JavaScript i w innych.
Więc tutaj my nie musimy się tym martwić przekazujemy string, w którym podajemy
jakby taki schemat, taki szablon według dokumentacji co chcemy mieć.
Gdybym zamiast kropek pomiędzy tymi
wartościami chciał pauzy to muszę je tylko tutaj wpisać.
I okazuje się, że teraz ta metoda format
zwróci nam kolejny string czyli już sformatowaną datę
i to właśnie my zwrócimy z naszej funkcji getDate. A przypomnę Ci, że z tej funkcji
korzystaliśmy w innej naszej metodzie czyli tutaj w getInfo.
Jeżeli będę chciał sobie to uruchomić i
zapisać, przejdziemy tutaj, tu wszystko się dzieje ale musimy sobie to
uruchomić wpisując nodemon -q index.js
zauważ, że wszystko działa jak należy.
I mamy ładnie sformatowaną datę czyli nasz program działa identycznie jak wcześniej
ale teraz korzystamy z biblioteki moment.js
i jeżeli w którymś momencie stwierdzę, że
chcę to sformatować inaczej czyli tak jak jest tutaj pokazane a więc np.
będę chciał wyświetlić January, February itd to skorzystam z trzech M,
zobaczmy czy by nam to zadziałało.
3 razy M zapisuje i teraz rzeczywiście
mamy 0:2 Drugi Mar jak marzec to jest w języku angielskim,
ale co ważne możemy tutaj ustawić
specjalnie tłumaczenie na język polski to też można znaleźć dokumentacji i wtedy
tutaj byłoby zamiast Mar to my moglibyśmy mieć po prostu Marzec.
Tak więc to wszystko jest możliwe i zauważ w jak prosty sposób możemy to zmienić.
Nie interesuje nas jak to wszystko działa pod spodem, to jest kod, który ktoś już
napisał i udostępnił w formie takiego modułu.
Mam nadzieję, że na tym przykładzie widzisz jak potężne daje nam możliwości
korzystanie z różnych bibliotek, które ktoś już napisał i udostępnił w internecie
i teraz najważniejsze jest abyś Ty jako
programista potrafił realizować swoje cele.
Czyli jeżeli masz do zrobienia jakiś
program to nie wynajdywał koła na nowo ale korzystał z tych komponentów, które już są
i dopisywał własne, które są niezbędne żeby taki program działał.
Jeśli natomiast chodzi o same narzędzia
tak jak tutaj skorzystaliśmy z npm to jak będziesz korzystał z języka PHP to tam
jest narzędzie, które nazywa się Composer i działa praktycznie identycznie.
Tak więc w każdym języku programowania znajdziesz podobne narzędzia, które
pozwalają Ci pobierać z Internetu jakieś moduły i z nich korzystać.
Nie jest ważne jak to zrobić,
ważne jest, że można to zrobić i żeby rozumieć po co taką operację się wykonuje.