Manualul Avansat de JavaScript
Stilizare
Stilizare prin atributul style
Unități de măsură în atributul style
Erori cu unitățile de măsură
Despachetarea valorilor proprietăților CSS
Resetarea stilurilor prin style
Setarea în masă a stilurilor
Problemele citirii stilurilor
Citirea proprietăților din fișierele CSS
Conversia valorilor citite
Stilizarea prin clase
O singură clasă pentru stilizare
Inconveniența claselor
Alternarea stilurilor prin data-
Metrici ale elementelor
Extinderea elementelor în CSS
Element de test
Dimensiunea client a elementului
Dimensiunea completă a elementului
Dimensiunile elementului cu scroll
Scrollarea elementelor
Modificarea scroll-ului elementului
Scrollarea elementului până la capăt
Deschiderea elementului
Lățimea barei de scroll
Metricile ferestrei
Dimensiunile ferestrei
Dimensiunile ferestrei cu derulare
Obținerea derulării ferestrei
Obținerea și modificarea derulării ferestrei
Metodă pentru derularea ferestrei în poziție
Metodă pentru derularea ferestrei cu o valoare
Metodă pentru derularea ferestrei către element
Evenimentul de derulare
Colecții Map
Colecții Set
Introducere
Umplere inițială
Capacități utile
Iterare cu buclă
Conversie
Eliminarea duplicatelor din matrice
Obținere fără duplicate
Pseudotablouri
Introducere
Asemănarea cu tablourile
Diferențe
Verificarea dacă este tablou
Conversia în tablou
Tipuri de pseudotablouri
Diferența dintre tipuri
Simboluri
Introducere în tipul Symbol
Descrierile simbolului
Simboluri ca chei ale obiectelor
Iterarea obiectului cu simboluri
Funcție în obiect
Operațiuni cu obiecte în funcție
Simboluri globale
Obținerea numelui simbolului
Simboluri bine cunoscute
Iteratori
Obiecte iterabile
Funcția iterator
Invocări de iterator
Generatoare
Bucle în generatoare
Funcționarea unică a iteratorilor
Iterator de obiect
Crearea unui obiect iterabil
Generator prin proprietate calculată
Iteratorul încorporat values
Iteratorul încorporat keys
Iteratorul încorporat entries
Trei iteratori încorporați
Operatorul spread și iteratorii
Iteratori încorporați pentru șiruri de caractere
Matrice de cifre a numărului
Numerotarea elementelor DOM
Obținerea datelor elementelor DOM
Formatul JSON
Stocare
Introducere
Stocarea în debugger
Date
Salvare unică
Rescrierea datelor
Ștergerea datelor
Golirea stocării
Numărul de înregistrări
Obținerea cheii după număr
Iterarea stocării după indecși
Vectori de chei și valori ale stocării
stocarea structurilor
Modificarea structurilor stocate
Practică
Expresii regulate
Introducere
Operatori de repetiție
Paranteze de grupare
Escaparea caracterelor speciale
Acolade
Limitarea lăcomiei
Grupuri de caractere
Seturi de caractere
Inversarea seturilor de caractere
Particularitățile chirilice
Caractere speciale în interiorul seturilor
Grupuri de caractere în interiorul seturilor
Caractere speciale-excepție în interiorul seturilor
Simbolul caret în interiorul seturilor
Particularitățile cratimei în interiorul seturilor
Ignorarea majusculelor
Începutul și sfârșitul șirului
Granița cuvintelor
Multilinie
Comanda 'sau'
Variabilă cu expresie regulată
Metoda test
Metoda search
Metoda split
Metoda match
Grupuri de captură în metoda match
match global
matchAll global
Metoda exec
Proprietatea lastIndex
Grupuri de captură în metoda replace
Callback în metoda replace
Grupuri de captură implicite în metoda replace
Grupuri de captură în expresia regulată însăși
Grupuri de captură denumite
Grupuri de captură denumite în interiorul expresiei
Paranteze non-capturante
Previzualizare pozitivă și negativă
Șir cu expresie regulată
Steaguri pentru șiruri
Backslash în șiruri
Situații excepționale
Introducere
Tipuri de situații apărute
Interceptarea excepțiilor
Dezvoltarea cu try-catch
Interceptarea excepțiilor în codul imbricat
Obiectul cu excepție
Tipuri de excepții de bază
Aplicarea tipurilor de excepție
Aruncarea excepțiilor
Aruncarea diferitelor tipuri de excepții
Aruncarea propriilor tipuri de excepții
Exemplu de excepție cu atribute data-
Exemplu de excepție cu JSON
Retrimiterea excepțiilor
Asincronitate
Cod sincron și asincron
Asincronitatea modelului bazat pe evenimente
Asincronitatea încărcării imaginilor
Situații excepționale în codul asincron
Callback-uri asincrone
Introducere
Transmiterea rezultatului în callback în mod asincron
Transmiterea parametrilor în callback-ul asincron
Tratarea excepțiilor în callback-urile asincrone
Încărcarea imaginilor
Problema callback hell
Încărcarea asincronă a imaginilor într-o buclă
Promisiuni
Introducere în promisiuni
Situații excepționale
Obiect cu eroare
Interceptarea separată a excepțiilor
Stările unei promisiuni
Lanțuri de promisiuni
Promisiuni în interiorul lanțului
Excepții în lanțurile de promisiuni
Lucrul cu matrice de promisiuni
Crearea promisiunilor îndeplinite
Promisificarea codului asincron
Problema promise hell
Promisiuni în stil sincron
Excepții în stil sincron
Biblioteci
Instrumente
Versionarea Semantică
Terminal
NodeJS
Introducere în npm
Instalare prin npm
Forma scurtă de instalare
Dependințe în fișierul package.json
Dependințe Dev
Formatele versiunilor dependințelor
Setările fișierului package.json
Crearea fișierului package.json
Transferul proiectului npm
Fișierul package-lock.json
Actualizarea pachetelor
Eliminarea pachetelor
Instalare globală prin npm
Eliminarea globală a pachetelor
Instrumentul npx
Rularea scripturilor prin npm
Managerul Yarn
Modulele ES
Introducere în module
Activarea modulelor ES
Instalarea Webpack
Principiul de funcționare al Webpack
Configurarea Webpack
Configurarea lansării build-ului Webpack
Build de testare cu Webpack
Conectarea bundle-ului la markup
Crearea unui modul ES
Conectarea unui modul ES
Redenumire la import
Importul întregului conținut al modulului
Exportul implicit
Combinația exporturilor
Importul întregului conținut la combinarea exporturilor
Exportul valorilor
Valori ca constante
Importul modulelor npm
Importul dinamic
Importul dinamic multiplu
Conversia modulelor CommonJS
Protocolul HTTP
Server de test
Introducere
Utilizare
Executarea codului
Generarea HTML
Antetele răspunsului
Configurarea portului
Lansare multiplă
Formulare
Trimiterea formularelor
Metode de trimitere a formularelor
Trimiterea formularelor prin metoda GET
Trimiterea formularelor prin metoda POST
Interogări GET
Aplicarea interogărilor GET
Butoanele formularului
Trimiterea formularelor prin JavaScript
Împiedicarea trimiterii formularului
Introducere în FormData
Metode FormData
Iteratori FormData
AJAX
Introducere în AJAX
Bazele lucrului cu fetch
Codul răspunsului HTTP
Succesul solicitării
Situații excepționale
Interceptarea completă a erorilor
Antetele răspunsului HTTP
Obținerea JSON
Antetele solicitării HTTP
Solicitări GET
Solicitări POST
Date prin URLSearchParams
Date prin FormData
Trimiterea întregului formular
Trimiterea JSON
Politica CORS
Transmiterea cookie-urilor
Stil sincron
Lucrul cu canvas
Începând să lucrezi
Desenarea liniilor
Desenarea dreptunghiurilor
Desenarea cercurilor
Schimbarea culorii liniei
Schimbarea grosimii liniilor
Bucle
Optimizarea codului
Factori de viteză de încărcare a site-ului
Resurse disponibile
Optimizarea operațiilor repetate
Optimizarea repetării operațiilor grele
Optimizarea operațiilor ciclice
Optimizarea trecerilor inutile ale buclei
Optimizarea prin funcții încorporate
Alegerea algoritmului optim
Optimizarea utilizării expresiilor regulate
Optimizarea lucrului cu DOM
Optimizarea consumului de memorie
Optimizarea conversiei în array
Optimizarea handler-elor de evenimente
Optimizarea vitezei în detrimentul memoriei
Date
Imuabilitate
Copie array
Copie obiect
Adăugarea elementelor în array
Ștergerea elementelor din array
Modificarea elementelor array-urilor
Array de obiecte
Generarea id-ului aleator
Adăugarea elementului cu id
Ștergerea elementului după id
Modificarea elementului după id
Modificarea unei proprietăți după id
Obținerea elementului după id