Wydajne Tworzenie Stron WWW
2 godz. 2 min · Full-stack i Programowanie
Piotr PalarzWeb DeveloperNiezależnie od tego jak skomplikowana jest dana strona czy aplikacja internetowa, zawsze składa się ona z przynajmniej dwóch komponentów - struktury opisanej w HTML i wyglądu nadanego w CSS. Praca z tymi językami może czasami przyprawić o ból głowy, szczególnie wtedy, gdy tracimy czas na szukanie powodu "rozjeżdżającego się" layoutu lub złej wielkości fontu i miejsca, w którym został on nadpisany. W takich sytuacjach Chrome DevTools to nieoceniona pomoc. Dzięki temu narzędziu w mgnieniu oka znajdziesz zbyt szeroki element, zmienisz jego style "na żywo" i upewnisz się, że problem został rozwiązany. W kursie poznasz wszystkie techniki pracy z HTML i CSS, których wykorzystanie znacznie przyspieszy i uprości Twoją pracę.
Przygotowywanie stron na urządzenia mobilne nie należy do najłatwiejszych zadań. Składa się na to przede wszystkim fakt, iż do czynienia mamy z bardzo wieloma rozdzielczościami telefonów czy tabletów. W kursie zobaczysz, w jaki sposób skalować swoją stronę odwzorowując różne urządzenia, wyświetlać Media Queries czy emulować sensory ruchu. Dowiesz się również jak symulować wolniejsze połączenie internetowe, z którym mamy często do czynienia w mobilnych sieciach, a także jak spowolnić procesor, aby odwzorować słabszy sprzęt, jakim bez wątpienia są urządzenia mobilne.
Współczesne strony internetowe to nie tylko HTML i CSS. To także JavaScript - a nawet... sporo JavaScriptu. Z tego powodu narzędzia deweloperskie przeglądarek oferują i na tym polu wiele możliwości. Jedną z nich jest konsola, która pozwala wykonywać kod JavaScript w obrębie aktualnie otwartej strony. To właśnie tam możemy eksperymentować, podglądać logi czy błędy. Kiedy jednak stajemy przed rozwiązaniem trudniejszego problemu, często niezbędne jest skorzystanie z tzw. debuggera. Z kursu dowiesz się jak debugować swoje aplikacje, aby proces ich tworzenia był jak najprzyjemniejszy. Poznasz sposoby wykonywnania kodu linijka po linijce, gdzie na każdym etapie uzyskasz wgląd we wszystkie dane niezbędne do znalezienia problemu lub przetestowania tworzonego rozwiązania.
Nim dowolna strona internetowa zostanie wyświetlona, musi najpierw zostać do przeglądarki przesłana z serwera w formie kodu. Początkowo to tylko kod HTML, chwilę później CSS, JavaScript, fonty, obrazki, multimedia. Wszystkie te zasoby mają wpływ na szybkość ładowania się strony, a także jej renderowania. Tworząc serwis, bardzo łatwo "przesadzić" i stracić kontrolę nad wydajnością tego procesu.Tutaj z pomocą przychodzi panel Network, który omówimy w kursie. To tam znajdziemy wszystkie zapytania wysłane do serwera, dokładne dane na temat czasu pobierania każdego zasobu, statusy odpowiedzi ciasteczka i wiele więcej.
Choć zarówno komputery osobiste jak i urządzenia mobilne z roku na rok stają się coraz wydajniejsze, to i technologie tworzenia aplikacji internetowych idą do przodu. Oznacza to tylko tyle, że coraz bardziej zaawansowane aplikacje, wymagają do płynnego działania, coraz mocniejszych urządzeń. Trend ten można jednak w pewnym stopniu zatrzymać, skupiając się na tym, czy aby na pewno tworzone przez nas rozwiązania są dobrze przemyślane i wolne od błędów, które mogą powodować nadmierne zużycie pamięci czy czasu procesora. W kursie zobaczysz jak badać wydajność naszego kodu w kontekście CPU i pamięci RAM oraz na jakie pułapki zwracać szczególną uwagę.
Kurs ten jest dla wszystkich osób tworzących strony i aplikacje internetowe. Nieważne czy dopiero rozpoczynasz swoją przygodę z Web Developmentem czy jesteś już weteranem w tej branży. Materiał ten pokaże Ci nowoczesne techniki pracy, które przyspieszą i uproszczą proces tworzenia i testowania stron WWW. Kurs został podzielony w taki sposób, aby zarówno osoby znające wyłącznie HTML i CSS, jak i te korzystające już z języka JavaScript, znalazły porady odnośnie tych tematów.
Przechodzimy do tematów związanych z językiem javascript i
w tych kilku lekcjach będę chciał żebyśmy poznali panel konsoli a
także panel sources zaczniemy od panelu console to
co tutaj mamy czyli panel console jest to interaktywna konsola która pozwala nam wywoływać
język javascript a także widzieć pewne rzeczy które
będą się działy w naszym kodzie jeżeli to będą błędy lub jeżeli to będą
logi które za moment pokażę ci jak tworzyć pierwsze tutaj można wykonywać w
obrębie strony na której jesteśmy język javascript więc jeżeli wpiszę dwa plus dwa to
będziemy mieli wynik cztery i jeżeli bym sobie skorzystał z funkcji alert która
wiem że w przeglądarkach jest dostępna wywołałem tę funkcję przeglądarka
zareagowała tak samo jak byśmy w naszym kodzie w skrypcie wpisali
alert hello czyli tutaj normalnie można wykonywać kod javascript jeżeli
byśmy się chcieli odwołać do obiektu na przykład location żeby sprawdzić jaki mamy protokół
coś takiego http wszystkie te rzeczy które są tutaj
dostępne są też dostępne w naszym kodzie javascript w zasadzie
może nie wszystkie jest tutaj parę takich specyficznych helperów ale poza
tym możemy tutaj wpisywać wszystko co możemy również wpisać w naszym kodzie javascript w konsoli
będą się również pojawić błędy na tej stronie mamy podpięty skrypt który sobie tutaj otworzyłem
to jest dokładnie ten skrypt i jeżeli wpisałbym tutaj niepoprawny kod javascript
na przykład coś takiego odświeżę stronę zauważ że tutaj nam
się pojawił błąd nawet jak będziemy w innych panelach to od razu będziemy widzieli
że w konsoli są jakieś błędy i te błędy są w naszym lub w cudzym
kodzie ale w kodzie który jest w obrębie naszej strony wykonywany więc tutaj warto
na to zwracać również uwagę jeżeli chodzi o błędy
to one są wyświetlane w ten sposób ale mamy również ostrzeżenia które mogą być wyświetlane
w kolorze żółtym lub pomarańczowym i jeżeli byłoby ich
sporo i chcielibyśmy się ich pozbyć to możemy sobie tutaj za pomocą tego
sidebara odpowiednio to ustawić to znaczy teraz mamy message czyli
w ogóle wszystkie wiadomości jakie są ale moglibyśmy zaznaczyć tylko warnings
pokazać tylko ostrzeżenia lub na przykład same błędy tutaj
jest tylko istotne to że jeżeli sobie coś klikniesz to żebyś o tym pamiętał
dlatego że tutaj przestały się wyświetlać błędy mimo tego że te błędy są ale jeżeli
ten sidebar zamkniemy to one z powrotem będą się pojawiać więc tutaj najlepiej
sobie to zostawić w ten sposób chociaż jak widzisz po zamknięciu tego sidebara nie ma to większego znaczenia
czasami jednak tutaj mamy tak wiele tych wiadomości że chcemy je w ten sposób przefiltrować
innym sposobem również jest taki filter filtr
który tutaj mamy czyli możemy sobie wyszukać na przykład error w ten sposób i
to nam się pokazuje natomiast zostałyby usunięte wszystkie inne
wiadomości które tutaj są więc może ten błąd sobie usuńmy teraz jeżeli
odświeżę jak widzisz ten błąd już się tutaj nie pojawia do konsoli
możemy przechodzić z dowolnego panelu czyli jeżeli jesteśmy na przykład w panelu elements możemy nacisnąć
przycisk escape i wysunie nam się taka szufladka od spodu i możemy sobie tutaj
przejść do konsoli i na escape znowu ją schować więc to jest to taki trik aby
szybko coś sobie w konsoli sprawdzić natomiast również możemy do niej przyjść w
ten sposób w konsoli będą się pojawiać i również wszystkie logi z
których będziemy korzystać więc w kodzie javascript a więc w kodzie javascript możemy
sobie napisać console kropka log tutaj będzie kilka metod które
ci za moment pokaże i możemy wpisać na przykład hello teraz jeżeli odświeżę stronę
to zobaczyliśmy że tutaj pojawiło się hello i widzimy w jakim pliku się to
znalazło i to jest bardzo bardzo przydatne w momencie kiedy chcemy z naszego
kodu coś zalogować do konsoli choćby po to żeby zobaczyć czy dana linijka kodu się
wykonuje tutaj w tym skrypcie oczywiście nie ma żadnego dodatkowego kodu więc
wiemy że cały ten skrypt się wykona ale czasami jest tak że coś nam nie działa i nie jesteśmy pewni
czy jakaś funkcja jest wykonywana wtedy wystarczy w niej zrobić console.log
i wpisać sobie tutaj cokolwiek i sprawdzić czy w konsoli to się pojawia natomiast
jeżeli to będzie bardzo wiele różnych błędów czy ostrzeżeń to tak jak wspomniałem
możesz sobie wtedy przefiltrować na przykład samo hello i tylko to tutaj zostanie
możemy również sobie wpisać console warm żeby zrobić
sobie jakieś ostrzeżenie wtedy ono się pojawi w taki sposób lub nawet console
error aby wyświetlić to w ten sposób myślę że to jest
bardziej przydatne wtedy gdybyśmy tworzyli jakiś framework lub bibliotekę którą byśmy udostępniali
innym i chcielibyśmy aby kiedy zrobią coś nie tak źle skorzystają z tej biblioteki
to aby pokazać im błędy nie mniej jednak warto wiedzieć że istnieją inne
metody oprócz log czyli jest to warn oraz error mamy jeszcze fajną
metodę console table pokażę ci on teraz tylko wrzucę tutaj fragment kodu gdybyśmy mieli
takie dane które mogłyby do nas przylecieć na przykład z serwera z użyciem ajaxa i
chcieli je wyświetlić to oczywiście jeżeli zrobimy zwykły console.log odświeżam
stronę to nam się tutaj pojawi w pojawi w takiej oto formie ale nie jest to aż tak bardzo czytelne
oczywiście tutaj nie jest źle ale czasami trudno się jest do tego dostać jeżeli mamy na
przykład większą tablicę więc jeżeli mamy takie dane gdzie w tablicy
są jakieś obiekty z powtarzającymi się kluczami jak first name last name i age to
możemy skorzystać z console table w ten sposób i zauważ że zostanie
to ładnie wyświetlone oczywiście z konsoli można korzystać również tutaj tutaj
mógłbyś również wpisać console table i podać jakąś nazwę zmiennej
jeżeli ona byłaby tutaj dostępna dlatego że w konsoli będą globalnie dostępne również
wszystkie zmienne które nie będą w jakimś ukrytym zakresie
oczywiście nie jest dobra praktyka ale jeżeli ten skrypt jest teraz podpięty do strony
tutaj nie ma żadnej funkcji to ta zmienna data będzie dostępna w konsoli
jak widzisz w ten sposób i jeszcze jedną metodą konsoli którą ci pokażę jest console.dir
ale może najpierw zrobimy sobie console.log taki tradycyjny i
chciałam wyświetlić pierwszy element tej tablicy zauważ że to będzie wyglądało
w ten sposób jest to czytelne nie ma z tym problemu ale czasami jeżeli mamy twoje dużo właściwości
lepiej jest to wyświetlić z użyciem console.dir tak
wtedy zobaczymy tutaj object i będziemy również mogli przejrzeć jego właściwości
w konsoli mamy takie skróty że możemy napisać samą funkcję dir i
też moglibyśmy zrobić data na przykład 1 i zauważ że daje
nam to to samo tylko na innym elemencie więc jest to taki skrót dostępny tylko tutaj
konsoli zamiast pisać console.dir możemy zrobić samo dir kolejną
fajną rzeczą w konsoli jeżeli byśmy sobie wyświetlili wszystko
co tutaj mamy taką tablicę jest to że możemy wybrany element zapisać
sobie jako zmienną globalna taką tymczasową czyli mogę kliknąć na przykład tutaj na 1
i wybrać store as global variable i to pokazało mi
że mam zmienną temp1 pod którą będę miał referencje właśnie do tego elementu
i to mi pozwala napisać na przykład temp1 first name w ten
sposób i od razu zobaczę tutaj tę wartość będę również mógł to modyfikować
i tak dalej swoją drogą jeżeli tutaj klikniemy na opcje możemy wybrać eager
evaluation i zauważ co się stanie jeżeli wpiszę temp1 first name
nie zdążę nawet dokończyć a już pokazuje mi jaki będzie wynik tej operacji
czasami może się to również bardzo przydać szczególnie jeśli wpiszę na przykład dwa
plus dwa od razu pokazuje 4 zanim zdąży zatwierdzić takie wyrażenie kolejną
sztuczną którą chciałbym ci pokazać jest to jak możemy się odwołać do konkretnego
elementu w drzewie dom powiedzmy że mam tutaj ten element header jeżeli
chciałbym go wyszukać to w języku javascript możemy to zrobić z użyciem document query selector
i skorzystać tutaj klasy header znajdzie
nam te ten oto element jeżeli plik na prawym przyciskiem wybiorę reveal in elements
panel to możemy go tutaj zobaczyć czyli jeżeli tutaj
w konsoli dowolny element sobie zalogujesz na przykład w funkcji obsługi
kliknięcia jakieś przycisku zrobisz console.log this albo event target to
w ten sposób będzie to wyświetlane czyli tak to będzie wyglądać możemy wtedy przejść
do takiego elementu i tutaj zobaczyć natomiast jeżeli z poziomu konsoli chciałbyś
wyszukiwać jakichś elementów to zamiast pisać całe document query selector możemy
skorzystać z funkcji dwóch dolarów i podać tutaj selector na przykład header
to nam zwróci taki tablicopodobny obiekt bo tak naprawdę pod spodem jest to odpowiednik
document query selector all i mamy to teraz tutaj oczywiście mogłem
to zapisać w zmiennej w ten sposób czyli utworzyć tutaj zmienną na przykład tag albo
jeżeli sobie tego wyszukamy mogę kliknąć prawym przyciskiem store as global variable razy google wary
mamy temp1 i temp1 kieruje mi właśnie na ten obiekt gdzie
pierwszym elementem jest ten wyszukany przeze mnie element natomiast teraz
pokażę ci coś dużo fajniejszego otóż jeżeli sobie w panelu element
zaznaczymy dowolny element na przykład ten header i przejdziemy do konsoli
albo tutaj na escape ją wysuwając albo przechodząc tutaj zobacz
ten element jest zaznaczony i wpiszemy $0 to to da nam referencje
dokładnie do tego elementu i co to oznacza że referencje otóż dokładnie
tak samo jak byśmy go z uzyciem document query selector czy jak byśmy tutaj
w javascripcie z tym obiektem pracowali czyli jeżeli mam ten
header to po $0 mam do niego bezpośredni dostęp mogę wpisać na przykład
classList.add i dodać ma jakąś kasę którą w stylu my-class jeżeli
przejdziemy do panelu elements ta klasa została tutaj dodana więc mogę wchodzić w
interakcje jakby z poziomu javascriptu z dowolnym elementem zaznaczając go i wpisując
$0 natomiast jeżeli zaznaczył bym teraz inny element tego
diva to on jest pod $0 a pod dolar jeden jest poprzednio zaznaczony
element i tak możemy zrobić jeszcze $2 $3 i
$4 chyba też teraz nie jestem pewny ale jeżeli byśmy sobie poklikali
więcej elementów to prawdopodobnie $4
również jak widzisz będzie tutaj obsługiwany może nie jest to aż tak bardzo przydatne
ale często $0 jest przeze mnie wykorzystywane czy $1
żeby zobaczyć poprzedni element na koniec chciałem ci pokazać jeszcze że
mamy tutaj ustawienia i warto sobie czasami tutaj coś zmienić na przykład
jeżeli zaznaczymy log xml http requests to wszystkie wysyłane ajaxem
zapytania będą się pojawiać w konsoli będziemy mogli wtedy podejrzeć ich szczegóły możemy
ukryć network to chodzi o to że jeżeli będziemy jakieś błędy na przykład 404
bo jakiś obrazek się nie wczytał i tak dalej to one się pojawiają w konsoli jeżeli tego jest
sporo to możemy to tutaj ukryć natomiast to co chciałbym ci pokazać jest to
preserve log i to jest bardzo przydatne dlatego że czasami jest tak że klikamy na
jakiś przycisk i wyskakuje nam w konsoli błąd ale również strona
się przeładowuje bo powiedzmy coś nie działa i tak naprawdę strona nie miała się przeładować
ale się przeładowała czasami po prostu jest tak że widzisz że tutaj
coś mignęło szybko i zniknęło więc jak temu zapobiec otóż
wystarczy zaznaczyć preserve log i jeżeli sobie tutaj będziemy robić ten
console.dir zauważ że jak odświeżę stronę to nam teraz pokazuje że przeszliśmy do
takiej strony i co tam zalogowaliśmy jeżeli jeszcze raz odświeżę nie
jest wszystko czyszczone ale jest zachowywany ten poprzedni log czyli wszystko
co się tutaj znalazło więc jeżeli czasami będziesz w sytuacji że coś ci szybko miga jakiś błąd
pojawia strona się przeładowuje to zaznacz po prostu preserve log i będziesz
mógł po przeładowaniu tej strony ten błąd zobaczyć na sam koniec jeszcze
smaczek dla ciekawskich pokażę ci że w konsoli możemy kolorować
sobie to co tam wpisujemy jeżeli zrobię console.log i chciałbym
hello pokolorować to możemy przed tym postawić %c
a jako drugi parametr przekazać tutaj style
czyli na przykład możemy napisać color red i font-size 20
pikseli jeżeli coś takiego zrobimy to zauważ że w konsoli będzie to wyglądać w ten
sposób to może się przydać jeżeli na przykład tworzysz jakąś aplikację kiedy jak ktoś
otworzy konsolę to chcesz go ostrzec że tutaj nie powinien nic zmieniać i tak dalej
czasami na stronach banków jeżeli przejdziemy do konsoli to możemy zobaczyć że jest
tutaj takie duże ostrzeżenie aby nigdy nie wklejać tutaj kodu który ktoś nam podał
i tak dalej