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.
W tej lekcji pokażę ci jak możemy debugować nasze aplikacje
z użyciem wbudowanego w panelu sources debuggera i dla przykładu
posłużymy się ajaxem mamy tutaj taki przykład 41 gdzie możemy wysłać
sobie zapytanie jeżeli kliknę i po chwili otrzymujemy odpowiedź która jest stawiana
tutaj do takiego elementu przy okazji zauważ że sporo rzeczy logujemy
do konsoli no i zazwyczaj to jest okej nie ukrywam że bardzo często również
po prostu w danej funkcji robię sobie console.log na przykład data
żeby zobaczyć jakie dane zostały przesłane z serwera i dzięki temu mogę to
zobaczyć po prostu w konsoli natomiast czasami łatwiej
jest podejrzeć pewne rzeczy albo je zdebugować z użyciem właśnie wbudowanego debuggera
i teraz chciałem ci pokazać jak to zrobić natomiast prześledźmy co się dzieje po kliknięciu
w przycisk wysyłamyzapytanie na taki adres i na sukces
będziemy chcieli po prostu wyświetlić że żądanie zakończone sukcesem tutaj
type of data i przede wszystkim wyświetlić sobie
dane czyli na razie wyświetlamy je wstawiając je tutaj za pomocą
funkcji display text gdzie mówimy że output to jest ten element a data
to są dane i po prostu ta funkcja na tym elemencie ustawia w jquery taki tekst
natomiast powiedzmy że na razie sobie wykomentuje te rzeczy
i że chciałbym sobie tutaj zrobić po prostu console.log data
tak jak wspomniałem bardzo często to robię wysyłam zapytanie i widzimy co zostało do nas
przesłane jest to po prostu string natomiast jeżeli sobie tutaj
w jquery zmienimy dataType na json to jquery automatycznie nam ten string
przysłany z serwera zamieni na obiekt i sytuacja wygląda inaczej
czyli tak możemy do tego obiektu się dostać zauważ że tutaj łatwiej byłoby
teraz skorzystać z console table co ci już pokazywałem wcześniej natomiast
chciałbym móc jeszcze inaczej się do tego elementu odwołać i mieć
większą kontrolę nad tym co się dzieje w tej linijce kodu i teraz
możemy to zrobić na dwa sposoby pierwszy jest taki aby przejść do sources tutaj
będziemy sobie musieli znaleźć ten skrypt jest on tutaj okej
dokładnie jest to w tym miejscu i będziemy mogli w tym miejscu które nas interesuje czyli
tutaj postawić breakpoint zrobimy to w taki oto sposób teraz
jeżeli sobie odświeżę stronę ten breakpoint został tutaj zapamiętany zrobię
wyślij zapytanie to zauważ że jak dostaniemy odpowiedź to mamy
coś takiego tutaj jak post in debugger to oznacza tylko tyle że wykonywanie naszego
kodu zostało zawieszone na tej linijce czyli kolejna linijka się na
razie jeszcze nie wykonała to wszystko jest zapauzowane a my możemy tutaj po
tym kodzie sobie przeskakiwać i teraz to jest pierwszy sposób jak możemy
to zrobić mogę taki breakpoint usunąć odświeżę
a drugi sposób który możesz zrobić z poziomu kodu jest taki
że w miejscu w którym chciałbyś zatrzymać wpisujesz po prostu słowo debugger jest
to słowo które chrome devtools rozpozna natomiast ważne żeby to później
usunąć zanim ten kod wrzucisz do produkcji odświeżam
jeszcze raz wyślij zapytanie i zauważ że dokładnie w tym samym miejscu się
zatrzymaliśmy i teraz zerknijmy co my w tym debuggerze mamy dlaczego
to jest lepsze niż ten console.log który wcześniej zrobiłem gdzie mogłem podejrzeć tylko przesłane
z serwera dane jest to lepsze dlatego że możemy zobaczyć co się dzieje
dokładnie w tej linijce czyli do czego mamy dostęp wiemy że w tej linijce kodu
powinniśmy mieć dostęp do parametru data i tak też się dzieje zauważ że ten parametr
tutaj jest i mamy również dostęp do innych parametrów
które są tutaj przekazane ale jeżeli znasz javascript wiesz że
w tym miejscu powinniśmy mieć dostęp też do na przykład funkcji która jest tym górnym zakresie i
do wielu innych rzeczy i dokładnie to możemy tutaj podejrzeć widzimy że w closure
czyli poprzez domknięcie mamy dostęp do zmiennych button oraz output
to są te zmienne czyli po pierwsze możemy potwierdzić że nasz kod powinien mieć do
nich dostęp po drugie możemy coś z nimi zrobić na przykład użyć store
as global value i co z tym zrobić mamy również dostęp do funkcji
display text i do globalnego obiektu czyli do wszystkiego co mielibyśmy
dostępne na przykład na window i tak dalej natomiast co
jest tutaj super jeżeli sobie teraz wcisnę escape żeby wysunąć szufladę z konsolą
i w tej konsoli sobie wpiszę mamy trochę tutaj mało miejsca
ale pamiętaj że jesteśmy zapauzowani w tym miejscu jeżeli sobie tutaj wpisze data
to zauważ że mam dostęp do tej zmiennej czyli ta konsola otwarta tutaj
kiedy jesteśmy zapauzowani w debuggerze pozwala nam wykonywać kod javascript
dokładnie w kontekście tego miejsca w którym jesteśmy to zostało
zapauzowane możemy wszystko dokładnie sprawdzić wszystko sobie przejrzeć i tak
dalej więc mogę sobie funkcję na przykład spróbujmy czy nam to
zadziała jak zrobię display text i przekaże zmianą output którą mamy i data
wciskam enter zauważ że zostało to tutaj wstawione czyli
mogę na zapauzowanym kodzie wykonywać sobie jeszcze jakieś akcje zamknę
sobie tą konsolę wciskając escape teraz pokażę ci jak możemy kontynuować bo to
jest bardzo ważne tutaj w kontekście debuggera otóż mamy tutaj po pierwsze cały call stack
czyli od czego się to wszystko zaczęło że jquery wykonywało jakieś
pewne funkcje wróciliśmy tutaj do naszego skryptu czyli do tej
metody czasami warto sobie to przejrzeć natomiast to co tutaj
możemy zrobić to skorzystać z tych ikonek które są w tym miejscu i po pierwsze możemy
kliknąć resume script execution klikamy i po prostu ten skrypt
się kończy bo nie mamy innych wyrażeń takich słów kluczowych
debugger moglibyśmy dodać jeszcze w innych miejscach lub poklikać sobie i
zrobić to w ten sposób więc jeżeli byśmy kliknęli continue
to byśmy się zatrzymali na kolejnym natomiast odświeżmy jeszcze raz chciałbym
żebyśmy się znowu zatrzymali w tym miejscu i pokażę ci że kolejna ikonka jest to
step over next function call klikniemy sobie to i zauważ
że przeszliśmy krok dalej do kolejnej funkcji a jest to console.log data
zauważ że jeszcze nic się w konsoli nie pojawiło kliknijmy dalej
teraz przeszliśmy tutaj i w konsoli te dane się pojawiły bo dopiero
teraz ta linijka została wykonana czyli idziemy sobie krok po kroku tutaj
mamy również bardzo fajną rzecz bo nam pokazuje co na tym etapie w data się znalazło
jest to oczywiście bardziej czytelne kiedy tu byłby na przykład string lub jakaś liczba i teraz
mamy kolejny wybór możemy kliknąć step over next function call
i przejdziemy wtedy tutaj zobacz lub moglibyśmy zrobić
inną rzecz ale muszę teraz odświeżyć żeby ci to pokazać zrobię to jeszcze raz
dojdziemy do tego miejsca i tutaj możemy kliknąć coś
takiego jak step into next function call czyli into chcemy wejść
do funkcji a więc nie wywołać nam funkcję i przejść dalej ale z jakiegoś powodu chciałbym
zobaczyć jak ta funkcja działa co w niej jest więc kliknę sobie w ten sposób i
przeszliśmy do tej funkcji którą mamy tutaj i z kolei teraz możemy podejrzeć
co w tej funkcji jest dostępne zauważ co zostało przekazane jako elem jako tekst
co jest pod this widzimy że pod this jest tutaj window do
czego ma dostęp ta funkcja poprzez domknięcia a także jaki jest
jakie są rzeczy w zakresie więc tak możemy sobie wejść do tej funkcji i
tutaj znowu gdyby tu były kolejne funkcje to moglibyśmy albo przeskakiwać poza te
funkcje wykonać je i przejść dalej albo wejść sobie to takiej funkcji tutaj możemy
zrobić step out of current function czyli chce z niej wyskoczyć i wrócimy wtedy
tutaj bo tutaj weszliśmy do tej funkcji ona się wykonała przeszliśmy tutaj
na stronie oczywiście jest odzwierciedlane to wszystko kiedy te funkcje
się wykonują ten kod jest normalnie wykonywany tylko że my kontrolujemy kiedy
i czy przeskakujemy linijka po linijce czy po prostu przeskakujemy poprzez
cała funkcję mogę tutaj teraz kliknąć resume script execution
i to wszystko się zakończyło tu możemy usunąć debugger i
mam nadzieję że ten prosty przykład pokazał ci że możesz na spokojnie sobie wszystko
przejrzeć nawet jeżeli coś się dzieje bardzo szybko my możemy tak naprawdę to zapauzować
i krok po kroku sobie przeskakiwać aby sprawdzić przede wszystkim jakie zmienne
są dostępne co w nich się znajduje i tak dalej a dodatkowo wysuwana tutaj
pod escape konsola pozwala nam wykonywać kod javascript w kontekście
linijki która jest aktualnie tutaj zaznaczona