Przegląd i Konfiguracje narzędzi
3 godz. 49 min · JavaScript · Full-stack i Programowanie
Adam GospodarczykAktualnie trudno wyobrazić sobie pracę w ekosystemie JavaScriptu bez terminala. W pierwszym rozdziale kursu nie tylko dowiesz się o dostępnych na rynku narzędziach oraz rozszerzeniach ale także o sposobach ich konfiguracji, uwzględniających przykłady z codziennej pracy, w tym wykorzystanie GPT-3 do łatwiejszej obsługi terminala.
Dla osób, które programują, IDE (Integrated Development Environment) niemal zawsze stanowi najważniejsze narzędzie pracy. Pomimo tego, że na rynku dostępny jest bardzo dobry Visual Studio Code, w tym kursie poznasz bliżej płatne narzędzia firmy JetBrains, które w wielu przypadkach sprawdzą się nieporównywalnie lepiej. Dobrze skonfigurowane IDE potrafi "zrozumieć" Twój kod na tyle, aby skutecznie Ci pomagać w pisaniu kodu, pracy zespołowej czy debugowaniu aplikacji.
Poza narzędziami bezpośrednio związanymi z programowaniem, istnieje szereg aplikacji które pomagają w codziennej pracy. Mowa o pracy koncepcyjnej, sandboxach, organizacji wiedzy, zadań, kalendarza, poczty czy nawet sięganie po narzędzia no-code / low-code. W tym kursie znajdziesz przegląd tych, które mają duży sens z punktu widzenia full-stack'a, aczkolwiek pamiętaj że każde z nich posiada też różne alternatywy, które mogą bardziej przypaść Ci do gustu.
Kolejnym niezbędnym elementem w programowaniu, są różnego rodzaju zależności projektu oraz narzędzia instalowane na komputerze czy serwerach, w celu ułatwienia pracy lub wręcz jej umożliwienia. Poza tym poruszymy też temat własnych skryptów a nawet tworzenia CLI w Node.js na własne potrzeby.
Tworzenie aplikacji w JS charakteryzuje konieczność wykorzystywania różnego rodzaju narzędzi, umożliwiających m.in. transpilowanie oraz optymalizację kodu. Obecnie jednym z najlepszych wyborów jest Vite i to na nim skupimy się najbardziej, łącząc go nie tylko z samym JavaScriptem ale także frameworkami CSS (konkretnie Tailwind CSS).
Ten kurs powstał z myślą o osobach pracujących w ekosystemie JavaScriptu. Jest to szybkie przegląd dostępnych na rynku narzędzi oraz przykładów ich praktycznego wykorzystania w codziennej pracy. Jeżeli szukasz inspiracji, nowych narzędzi lub sposobów usprawnienia codziennych zadań — w tym kursie je znajdziesz.
Nie ulega wątpliwości, że na przestrzeni
ostatnich lat to, w jaki sposób tworzymy frontend bardzo mocno uległo zmianie.
Jednym z takich elementów jest nowy zestaw
narzędzi, które wykorzystujemy do budowania naszej aplikacji
i w szczególności mam tutaj na myśli tą część frontendową.
W momencie, gdy już będziesz projektować full stackowe aplikacje nagle stanie się
wielkim problemem to, aby poświęcać dużo czasu na konfigurację narzędzi, które
zasadniczo odpowiadają tylko za to, aby zbudować Twoją aplikację.
I tak jak w przypadku Webpacka pamiętam, że
sam nagrywałem praktycznie kursy wyjaśniające to, w jaki sposób można w
ogóle uruchomić Webpacka, a co dopiero wykorzystać go np.
w środowisku produkcyjnym.
Oczywiście na pewnym etapie ma znaczenie to, w jaki sposób buduje się nasza
aplikacja i umiejętność kontroli tego procesu staje się istotna, ale
jednocześnie w większości przypadków zupełnie nie musimy zaglądać do plików
konfiguracyjnych po to, aby rozwijać nierzadko nawet rozbudowane aplikacje.
Myślę, że najlepsze w tym wszystkim jest
to, że jeżeli jesteś w sytuacji, w której np.
konfiguracja Gulpa czy Webpacka nie stanowi już dla Ciebie problemu, to zakładam, że
to co przed chwilą powiedziałeś nie robi już na Tobie żadnego wrażenia.
Ale jednocześnie jeżeli przejdziemy sobie teraz do naszego katalogu projektu i np.
wykorzystamy teraz create-react-app do tego, aby zainicjalizować nową
aplikację, to oczywiście po wyrażeniu zgody mogę tutaj rozpocząć jakąś dłuższą
dyskusję i wyjaśnienia jakichś skomplikowanych procesów, które tutaj
zachodzą i narzędzi, które możemy wykorzystywać
ponieważ jej przygotowanie trwa tak długo.
Przypomnę jeszcze tylko, że ja aktualnie
pracuję na bardzo mocnej konfiguracji i tym bardziej spodziewałbym się, że takie
proste rzeczy jak zainicjalizowanie aplikacji, w której w zasadzie nic nie ma,
będzie trwało zdecydowanie krócej niż ponad 25 sekund.
I teraz tylko możesz sobie wyobrazić ile
trwa ten proces w przypadku maszyny z nieco słabszą konfiguracją.
No ale pójdźmy teraz krok dalej i wejdźmy
do aplikacji, a następnie włączmy ją. Pomimo tego, że aplikacja jest dość mała,
raz, że włączyła mi się tutaj zła
przeglądarka, pomimo tego, że inną mam ustawioną jako domyślną, to i tak musiałem
czekać na samo włączenie przynajmniej dwie trzy sekundy.
W momencie, gdy aplikacja rośnie
taki proces trwa znacznie dłużej.
Co więcej, nawet wprowadzanie pojedynczych
zmian może często wiązać się z koniecznością przebudowania aplikacji i za
każdym razem taki proces może zająć od kilku do kilkunastu sekund.
Nie wspomnę już o samym procesie budowania aplikacji na potrzeby produkcyjne, co
również wraz z rozwojem naszej aplikacji będzie zajmowało znacznie więcej czasu.
Sam pamiętam również jak wiele czasu
spędziłem nad tym, aby skonfigurować aplikację, by budowała się w sposób, który
uwzględnia techniki optymalizacyjne takie jak chociażby tree shaking
i teraz sumując to wszystko w całość, czyli kwestie konfiguracji, kwestie samego
uruchomienia, wprowadzenia zmian i oczekiwania na ich zastosowanie oraz
zbudowanie aplikacji i w tym również publikację jej na serwerze produkcyjnym,
zaczynamy mieć tutaj wiele miejsc, w przypadku których możemy tracić mnóstwo
energii i czasu w oczekiwaniu na zbudowanie naszej aplikacji.
Pytanie więc teraz co możemy z tym zrobić?
Jak się pewnie domyślasz, od czasów Gulpa i Webpacka powstało wiele różnych narzędzi i
rozwiązań, które starały się zaadresować problemy poprzedników.
Jedne robiły to lepiej, inne trochę gorzej,
natomiast na koniec dnia nasza uwaga
powinna skupić się głównie na narzędziu Vite.
Rozwiązuje ono praktycznie wszystkie
wspomniane przeze mnie wcześniej problemy i dodatkowo oferuje znacznie więcej.
Oczywiście nie można się tutaj oszukiwać, że na pewnym etapie konieczne będzie
zajrzenie do konfiguracji i ustawienie kilku rzeczy, ale jednocześnie
wprowadzenie takich zmian jest niezwykle proste w porównaniu chociażby do Webpacka, w
przypadku którego dość niskopoziomowo musieliśmy konfigurować różnego rodzaju
rozszerzenia i pluginy, które niekoniecznie współgrały ze sobą.
W tym przypadku do naszej dyspozycji
oddany jest dość prosty interfejs, z pomocą którego te najważniejsze rzeczy
można skonfigurować z pomocą stosunkowo prostego obiektu konfiguracyjnego.
Jednocześnie, jeżeli masz taką potrzebę,
istnieje również możliwość sięgania głębiej i albo instalowania utworzonych
już pluginów lub też nawet utworzenia własnych.
Myślę, że na tym etapie nie będziemy
skupiać się na tych najbardziej zaawansowanych aspektach konfiguracji Vite
tylko zobaczmy, jakie jesteśmy w stanie w ogóle zacząć z niego korzystać.
Otóż na początek możemy po prostu utworzyć katalog vite, a następnie przejść do niego,
zainicjalizować Package.json oraz zainstalować sam vite jako dev dependency.
No i teraz możemy otworzyć nasz edytor i utworzyć plik index.html
Tutaj jak się pewnie domyślasz, jesteśmy w stanie tworzyć w zasadzie co tylko chcemy.
Oczywiście w momencie gdy dodajemy jakieś skrypty musimy oznaczyć je jako moduł, a
następnie po prostu wpisać sobie tutaj kod JavaScript.
Analogicznie też możemy robić ze stylami,
w przypadku których wystarczy utworzyć plik CSS bądź SCSS, a te zostaną nie tylko
odpowiednio podłączone do naszej aplikacji ale
również zyskamy tutaj kilka innych dodatków, które za chwilę Ci pokażę.
Mianowicie, jeżeli teraz uruchomimy sobie naszą
aplikację z pomocą polecenia vite, no to zwróci uwagę, że po pierwsze trwało to
72 milisekundy, a po drugie od razu mamy tutaj kilka bonusów.
Pierwszym z nich jest fakt, że jeżeli wprowadzę tutaj jakiekolwiek zmiany, to
jak widzisz, natychmiast zostaną one odwzorowane w przeglądarce.
Co więcej, to samo by wydarzyło się w momencie, gdybym miał otwartą naszą
aplikację w wielu różnych oknach przeglądarki.
Analogicznie też, jeżeli zmienię tutaj
kolor naszego tła, to natychmiast zmiany zastosowane w CSSie zostaną tutaj
dosłownie wstrzyknięte do naszej aplikacji.
Oznacza to, że w naszym projekcie na ten moment niepotrzebny jest nawet plik
konfiguracyjny vite, a wszystko bez problemu tutaj działa.
Naturalnie w większości przypadków musimy zadbać tutaj o jeszcze kilka dodatkowych
elementów, o których będziemy mówić w kolejnych lekcjach, ale na potrzeby
tworzenia jakiś prostych interfejsów oraz szybkiej edycji plików HTML
myślę, że to co mamy tutaj jest w pełni wystarczające.
Zatem zwróć uwagę jaką przewagę zyskaliśmy
poprzez sięgnięcie po prostu po nowsze, bardziej dopracowane narzędzie, które
rozwiązuje skutecznie problemy poprzedników.
Po pierwsze nie musieliśmy tutaj nic konfigurować,
aplikacja uruchomiła się natychmiast i
natychmiast też mamy podgląd do wszystkich wprowadzanych zmian.
Co więcej, sposób w jaki działa Vite sprawia, że ta szybkość jest utrzymywana
nawet w sytuacji, gdy mamy do czynienia z bardzo rozbudowaną aplikacją.
Nie będę tutaj zgłębiał się w szczegóły ze względu chociażby na to, że w większości
przypadków po prostu ta wiedza nie jest nam potrzebna, ale istotny jest tutaj
efekt, który otrzymujemy i z którego możemy korzystać.
Co więcej, wcześniej wspominałem chociażby
o tym, że możemy korzystać z Parcela do tego, aby tak szybko postawić sobie
serwer, na którym jesteśmy w stanie pracować,
natomiast jednocześnie, pomimo tego, że
Parcel naprawił szereg swoich problemów, które dotykały go przez długi czas, tak
jednocześnie w przypadku Vite nadal mówimy tutaj o przepaści.
Przykładowo, jeżeli teraz utworzymy sobie nową podstronę i nazwiemy ją np.
about.html no to nawet bez
restartowania serwera jesteśmy w stanie przejść na adres pages/about i wszystkie
wprowadzone tutaj zmiany są dla nas od razu dostępne.
Oczywiście w tym momencie znajdujemy się w
konfiguracji, w przypadku której nie mamy do czynienia z żadnym frameworkiem
JavaScript, a jeżeli tylko masz na to ochotę, to nic nie stoi na przeszkodzie,
aby teraz wykorzystać Vite do tego, aby zainicjalizować nową aplikację
i co więcej, nie odgrywa tutaj większej roli
to z jakim frameworkiem frontendowym pracujemy.
Jak widzisz, na tym etapie jesteśmy w stanie wybrać nie tylko te popularne
frameworki, ale również jeżeli zdecydujemy się np.
na svelte, to jesteśmy w stanie nawet
zdecydować, czy już na początkowym etapie chcemy mieć obsługę TypeScriptu.
Jeżeli tak, możemy po prostu teraz przejść do naszego projektu, a następnie
zainstalować zależności i zrobię to z pomocą Bun, aby było szybciej
i tym samym też moglibyśmy wykorzystać
tutaj Bun do tego, aby uruchomić naszą aplikację,
natomiast niestety w związku z tym, że to narzędzie jest jeszcze w wersji beta, to
jak widzisz w przypadku svelte nasza aplikacja teraz nie działa i w związku z
tym nie pozostaje nam nic innego jak po prostu klasycznie ją uruchomić.
W tym momencie wszystko jest już tutaj w
porządku i jesteśmy w stanie wykorzystać tutaj pełen potencjał Svelte w połączeniu z Vite.
Myślę, że na ten moment możemy się tutaj
zatrzymać ze względu na to, że to co najważniejsze już wiesz.
Mianowicie, jeżeli korzystasz ze starszych narzędzi takich jak Gulp czy Webpack lub
też nawet rozwiązań takich jak Create React App, no to całkiem prawdopodobne, że
całkiem mądre będzie sięgnięcie po nowsze rozwiązania, takie jak chociażby Vite,
czy w momencie, gdy będzie dostępna jego
nieco bardziej stabilna i rozbudowana wersja po narzędzia takie jak Bun.
Oszczędność jaką zyskasz właśnie tylko poprzez to, że przełączy się na nowszy
zestaw narzędzi jest tutaj odpowiednio widoczna.
Tymczasem dzięki za uwagę i zapraszam do kolejnej lekcji.