Dasturlashni noldan, o'zbek tilida o'rgan
JavaScript'dan tortib backend, frontend va DevOps'gacha โ to'liq o'quv dasturi o'zbek tilida, batafsil tushuntirishlar va brauzerda ishlaydigan interaktiv misollar bilan. Jami 226 ta dars.
Birinchi darsdan boshlash โTo'liq mundarija
Web dasturlashning to'liq yo'l xaritasi. Har bir dars amaliy misollar bilan.
1-qism: JavaScript tili
Kirish
JavaScript haqida
JavaScript nima, u qanday paydo bo'lgan va bugungi kunda qayerda ishlaydi.
Qo'llanmalar va spetsifikatsiyalar
ECMAScript spetsifikatsiyasi, MDN va boshqa ishonchli manbalar.
Kod muharrirlari
IDE va yengil muharrirlar โ dasturchining asosiy ish quroli.
Ishlab chiquvchi konsoli
Brauzer developer tools va konsol orqali xatolarni ko'rish.
JavaScript asoslari
Salom, dunyo!
JavaScript kodini HTML sahifaga qanday ulash: script tegi, src atributi va tashqi fayllar.
Kod tuzilishi
Instruksiyalar, nuqta-vergul (;) qo'yish qoidalari, avtomatik qo'yilish tuzoqlari va izohlar.
Zamonaviy rejim, "use strict"
"use strict" direktivasi nima, u nimani o'zgartiradi va zamonaviy kodda uning avtomatikligi.
O'zgaruvchilar
let, const va var; o'zgaruvchi yaratish, nomlash qoidalari, camelCase va const ma'nosi.
Ma'lumot turlari
JavaScript'ning 8 ta ma'lumot turi va typeof operatori.
Turlarni o'zgartirish
String, Number va Boolean konvertatsiyasi hamda qanday qiymatlar 0, false yoki NaN bo'lishi.
Asosiy operatorlar, matematika
Matematik amallar, unar operatorlar, ustuvorlik, += kabi qisqartmalar va string+son xatti-harakati.
Taqqoslashlar
Taqqoslash operatorlari, == va === farqi, matnlarni leksikografik taqqoslash, null/undefined tuzoqlari.
Shartli operatorlar: if, ?
if/else if/else konstruksiyasi, shartning boolean'ga o'girilishi va ternar operator ? :.
Mantiqiy operatorlar
|| && ! operatorlari, qisqa tutashuv (short-circuit) va ularning qiymat qaytarish xususiyati.
Nullish birlashtiruvchi operator ??
?? operatori nima, uning || dan farqi (0 va bo'sh matn holatlari) va ustuvorligi.
Sikllar: while va for
Bir xil amallarni ko'p marta takrorlash uchun sikllar โ while, do..while va for.
switch konstruksiyasi
Bir o'zgaruvchini bir nechta qiymat bilan solishtirish uchun switch/case/default.
Funksiyalar
Kodni takrorlamaslik uchun asosiy vosita โ funksiya e'loni, parametrlar, return.
Funksiya ifodalari
Funksiya โ bu qiymat. Function Expression, Function Declaration va callback funksiyalar.
Strelka funksiyalari, asoslari
() => sintaksisi โ funksiyalarni yozishning qisqa va qulay usuli.
Kod sifati
Brauzerda debugging
Sources paneli, breakpoint'lar, kodni qadamma-qadam bajarish va debugger buyrug'i.
Kod uslubi
Qavslar, chekinish, qator uzunligi, nomlash va linterlar (ESLint).
Izohlar
Yaxshi va yomon izohlar; nima uchun (nima emas, nega) izoh kerak.
Avtomatlashtirilgan testlar (Mocha)
Nega test kerak; BDD; describe/it/assert; TDD jarayoni.
Polyfill va transpilyatorlar
Babel, transpiler nima, polyfill nima, core-js va eski brauzerlar mosligi.
Obyektlar: asoslar
Obyektlar
Obyekt yaratish, xossalar bilan ishlash, nuqta va kvadrat qavslar, delete, hisoblangan xossalar, "in" operatori va for..in sikli.
Obyekt havolalari va nusxalash
Obyektlar havola (reference) orqali saqlanadi va ko'chiriladi. = obyektni nusxalamaydi. Object.assign, sayoz nusxa va structuredClone.
Axlat yig'ish (Garbage collection)
Xotira boshqaruvi, erishuvchanlik (reachability), root, ishlatilmaydigan obyektlarni tozalash va mark-and-sweep algoritmi g'oyasi.
Obyekt metodlari, this
Obyektga metod qo'shish, this kalit so'zi, this'ning chaqiruvga bog'liqligi va strelka funksiyalarda this yo'qligi.
Konstruktor, new operatori
Konstruktor funksiyalar va new operatori yordamida bir turdagi ko'plab obyektlarni yaratish.
Optional chaining ?.
?. operatori โ zanjirdagi oraliq xossalar mavjud bo'lmasa ham xatosiz ishlaydigan xavfsiz kirish usuli.
Symbol turi
Symbol โ noyob identifikatorlar yaratuvchi primitiv tur, yashirin xossalar va tizimli simvollar.
Obyektni primitivga o'girish
Obyekt matematik yoki satr operatsiyalarida qanday primitivga aylantiriladi: hint, Symbol.toPrimitive, toString va valueOf.
Ma'lumot turlari
Primitivlar metodlari
Primitiv qiymatlar (satr, son, mantiqiy) ustida ham metod chaqirish mumkin. Bu qanday ishlaydi va "obyekt o'ramchasi" nima?
Sonlar
Sonlarni yozish usullari, sanoq tizimlari, yaxlitlash, aniqlik muammolari va Math obyekti bilan ishlash.
Satrlar
Matn ma'lumotlari: tirnoq turlari, shablon satrlar, maxsus belgilar, uzunlik, belgilarga murojaat va satr metodlari.
Massivlar
Tartiblangan ma'lumotlar to'plami: yaratish, indekslar, uzunlik, qo'shish/o'chirish metodlari va aylanish (loop).
Massiv metodlari
Massivlarni boshqarish uchun eng muhim metodlar: qo'shish/o'chirish, qidirish, saralash, transformatsiya va reduce.
Iteratsiyalanuvchi obyektlar (iterable)
for..of qanday ishlaydi, Symbol.iterator, o'z iterable obyektingni yaratish, Array.from.
Map va Set
Map โ istalgan kalitli assotsiativ to'plam; Set โ unikal qiymatlar to'plami. Obyektdan farqi va iteratsiya.
WeakMap va WeakSet
Kuchsiz havolalar, faqat obyekt kalitlar, iteratsiya yo'qligi va amaliy qo'llanishi (kesh, qo'shimcha ma'lumot).
Object.keys, values, entries
Obyekt kalitlari, qiymatlari va juftliklarini massiv sifatida olish; ular ustida aylanish va qayta yig'ish.
Destrukturizatsiya
Massiv va obyektlarni alohida o'zgaruvchilarga qulay tarzda ajratib olish.
Sana va vaqt (Date)
Date obyekti bilan sana yasash, komponentlarini olish, timestamp va sanalar ayirmasini hisoblash.
JSON metodlari, toJSON
Obyektni JSON satriga aylantirish (stringify) va qayta o'qish (parse); replacer, bo'shliq, reviver va toJSON.
Funksiyalar bilan chuqur ishlash
Rekursiya va stek
Rekursiya g'oyasi, asos va rekursiv holat, faktorial, daraja, Fibonachchi va ijro steki.
Rest parametrlar va spread
...rest parametrlar, eski arguments obyekti, ...spread bilan yoyish va nusxa olish.
O'zgaruvchi ko'lami, closure
Blok ko'lami (let/const), leksik muhit, closure va hisoblagich (counter) misoli.
Eski "var"
var ning o'ziga xosligi, blok ko'lami yo'qligi, hoisting va nega let/const afzal.
Global obyekt
globalThis, window/global, global funksiyalar va nega global o'zgaruvchidan qochish kerak.
Funksiya obyekti, NFE
Funksiya ham obyekt ekanligi, uning name va length xossalari, o'z xossalarini qo'shish hamda Named Function Expression (NFE).
new Function sintaksisi
Satrdan funksiya yaratish: new Function('a', 'b', 'return a + b'), uning qo'llanishi va cheklovlari.
setTimeout va setInterval
Kodni kechiktirib yoki takroran bajarish: setTimeout, clearTimeout, setInterval, clearInterval, nolinchi kechikish va ichma-ich setTimeout.
Dekoratorlar va uzatish, call/apply
Kontekstni uzatuvchi func.call va func.apply metodlari, keshlovchi dekorator hamda argumentlarni uzatish.
Funksiya bog'lash (bind)
this yo'qolishi muammosi, func.bind orqali kontekstni bog'lash va qisman qo'llash (partial application).
Strelka funksiyalari (qayta ko'rib chiqish)
Strelka funksiyalarining chuqur xususiyatlari: o'z this va arguments yo'qligi, new bilan ishlamasligi va qachon foydali ekanligi.
Obyekt xossalari konfiguratsiyasi
Xossa bayroqlari va deskriptorlari
Obyekt xossalari faqat qiymatdan iborat emas โ ular writable, enumerable va configurable bayroqlariga ega. Ularni qanday o'qish va o'zgartirish mumkin.
Getter va setterlar
Aksessor xossalar โ bu funksiyalar orqali qiymatni o'qish va yozishni boshqaruvchi maxsus xossalar. Ular validatsiya va hisoblangan qiymatlar uchun ajoyib.
Prototiplar, meros
Prototipli meros
[[Prototype]] yashirin xossa, __proto__, prototip zanjiri va xossalar qanday qidirilishi.
F.prototype
Konstruktor funksiyaning prototype xossasi, new bilan bog'liqligi, default prototype va constructor.
Tug'ma prototiplar
Object.prototype, Array.prototype, String.prototype va boshqalar, hamda ularni kengaytirish xavfi.
Prototip metodlari, __proto__siz obyektlar
Object.create, Object.getPrototypeOf/setPrototypeOf, __proto__ nima uchun eskirgan va Object.create(null).
Klasslar
Klass asosiy sintaksisi
class kalit so'zi, constructor, metodlar, getter/setter, hisoblangan nomlar va class ifodasi.
Klass merosi
extends kalit so'zi, super() konstruktorda, super.method() va metodlarni qayta aniqlash (override).
Statik xossa va metodlar
static metodlar, statik xossalar, factory metodlar va statik meros.
Maxfiy va himoyalangan xossalar
protected konvensiyasi (_), private #maydonlar, getter/setter bilan himoya va inkapsulyatsiya.
Tug'ma klasslarni kengaytirish
Array, Error kabi tug'ma klasslarni extends qilish va Symbol.species tushunchasi.
instanceof tekshiruvi
instanceof operatori, prototip zanjiri orqali tekshiruv, Symbol.hasInstance va Object.prototype.toString.
Mixinlar
mixin g'oyasi, Object.assign bilan qo'llash, hodisali mixin misoli va merosdan farqi.
Xatoliklarni boshqarish
Xatoliklarni boshqarish, try...catch
try...catch...finally, Error obyekti, throw operatori va o'z xatoliklaringizni tashlash.
Maxsus xatoliklar, Error'ni kengaytirish
Error'dan extends qilish, o'z xato klasslari, instanceof, xatoliklar ierarxiyasi va wrapping.
Promise, async/await
Kirish: callback'lar
Asinxron harakatlar, callback g'oyasi, xatolik-birinchi (error-first) uslub va "callback jahannami" muammosi.
Promise
new Promise(executor), resolve/reject, holatlar (pending/fulfilled/rejected) va .then/.catch/.finally metodlari.
Promise zanjiri
.then zanjiri, qiymatni bosqichma-bosqich uzatish, then ichida promise qaytarish va zanjirning tekis bo'lishi.
Promise bilan xatoliklarni boshqarish
.catch bilan xatoliklarni ushlash, xatoning zanjir bo'ylab o'tishi, qayta tashlash va unhandledrejection hodisasi.
Promise API
Promise klassining statik metodlari: all, allSettled, race, any, resolve va reject.
Promisifikatsiya
Callback qabul qiluvchi funksiyani promise qaytaradigan funksiyaga aylantirish.
Mikrovazifalar (microtasks)
Mikrovazifa navbati, .then callback'lari tartibi va setTimeout bilan farqi.
Async/await
async funksiyalar, await, try/catch bilan xatoliklar va top-level await.
Generatorlar, ilg'or iteratsiya
Generatorlar
function* va yield yordamida qiymatlarni birma-bir, talab bo'yicha ishlab chiqaruvchi maxsus funksiyalar.
Asinxron iteratsiya va generatorlar
for await..of, Symbol.asyncIterator va async generatorlar โ ma'lumot asta-sekin, so'rovlar orqali kelganda ishlatiladi.
Modullar
Modullar, kirish
Modul nima, nega u kerak, bitta fayl = bitta modul, script type=module va modullarning o'ziga xos xususiyatlari.
Eksport va Import
export/import ning barcha ko'rinishlari: nomli eksport, default eksport, import * as, as bilan qayta nomlash va re-export.
Dinamik importlar
import() ifodasi, uning promise qaytarishi, shartli va kechiktirilgan yuklash hamda statik importlardan farqi.
Qo'shimcha mavzular
Proxy va Reflect
Proxy obyekti bilan boshqa obyekt ustidagi amallarni ushlab qolish (traps) va Reflect API bilan ularni to'g'ri bajarish.
Eval: kod satrini ishga tushirish
eval() funksiyasi bilan satr ko'rinishidagi kodni bajarish, uning ko'lami, xavflari va zamonaviy muqobillari.
Karrilash (Currying)
Ko'p argumentli funksiyani f(a)(b)(c) ko'rinishidagi bir argumentli funksiyalar zanjiriga aylantirish va qisman qo'llash.
Reference Type
Nega obj.method() this'ni to'g'ri oladi-yu, (obj.method)() yoki metodni o'zgaruvchiga ko'chirish this'ni yo'qotadi โ ichki Reference Type mexanizmi.
BigInt
2 in 53 dan katta butun sonlar bilan aniq ishlash uchun BigInt turi: 123n yozuvi, amallar va Number bilan aralashtirmaslik.
Unicode, satr ichki tuzilishi
Satrlar UTF-16 da qanday saqlanadi, surrogat juftlar, kod nuqtalari, codePointAt va emoji uzunligi muammosi.
WeakRef va FinalizationRegistry
Obyektni axlat yig'ishga to'sqinlik qilmasdan zaif havola saqlash (WeakRef) va u yo'q qilingach xabar olish (FinalizationRegistry).
2-qism: Brauzer โ hujjat, hodisalar, interfeyslar
Hujjat (DOM)
Brauzer muhiti va spetsifikatsiyalar
JavaScript qanday muhitlarda ishlaydi, brauzerdagi global obyekt window, DOM, BOM va document nima, host muhitlari va rasmiy spetsifikatsiyalar.
DOM daraxti
HTML hujjat qanday qilib teglar daraxtiga aylanadi, element va matn tugunlari, avtomatik xatolarni tuzatish, tugun turlari va DevTools'da ko'rish.
DOM bo'ylab harakatlanish
documentElement, body, head; bolalar (childNodes, firstChild, lastChild), qo'shnilar va ota tugunlar; faqat elementlar bo'yicha navigatsiya va jadvallar bilan ishlash.
Elementlarni qidirish: getElement*, querySelector*
getElementById, querySelector va querySelectorAll, getElementsByTagName/ClassName, matches, closest, contains hamda jonli va statik to'plamlar farqi.
Node xossalari: tur, teg va tarkib
DOM tugun sinflari ierarxiyasi, nodeType, nodeName va tagName, innerHTML va outerHTML, nodeValue/textContent hamda hidden xossasi.
Atributlar va xossalar
DOM xossalari va HTML atributlari orasidagi farq, getAttribute/setAttribute/hasAttribute/removeAttribute, xossa-atribut sinxronizatsiyasi hamda data-* atributlar va dataset.
Hujjatni o'zgartirish
Yangi elementlarni yaratish (createElement, createTextNode), ularni sahifaga qo'shish (append/prepend/before/after/replaceWith), insertAdjacentHTML, elementni o'chirish, nusxalash (cloneNode), eski usullar va DocumentFragment.
Uslublar va klasslar
className va classList (add/remove/toggle/contains), element.style bilan inline uslublar, cssText, getComputedStyle orqali yakuniy uslublarni o'qish va muhim uslub qoidalari.
Element o'lchami va skroll
offsetWidth/Height, clientWidth/Height, scrollWidth/Height, scrollTop/Left, offsetParent va getBoundingClientRect qisqacha โ elementning geometrik xossalari.
Oyna o'lchamlari va skroll
document.documentElement orqali oyna (viewport) o'lchamini olish, hujjatning to'liq o'lchami, pageYOffset/scrollY joriy skroll, scrollTo/scrollBy va scrollIntoView bilan skroll boshqarish.
Koordinatalar
Ikki koordinata tizimi: oynaga nisbatan (clientX/clientY) va hujjatga nisbatan (pageX/pageY), getBoundingClientRect, elementFromPoint va koordinatalar orqali elementni joylashtirish.
Hodisalarga kirish
Brauzer hodisalariga kirish
Hodisa nima, uni tinglashning uch usuli: HTML atribut (onclick), DOM xossa (elem.onclick), addEventListener/removeEventListener; event obyekti, this va handleEvent bilan obyekt-ishlovchi.
Ko'tarilish va tutish (bubbling va capturing)
Bubbling tamoyili, event.target va currentTarget farqi, stopPropagation va stopImmediatePropagation, capturing fazasi va hodisaning uch fazasi.
Hodisa delegatsiyasi
Bubbling va targetdan foydalanib, bitta ishlovchi bilan ko'p elementni boshqarish; data-atributlar bilan delegatsiya; 'behavior' patterni va afzalliklari.
Brauzerning standart harakatlari
preventDefault bilan standart harakatni to'xtatish; onclick uchun return false; passive; event.defaultPrevented; havola va forma misollari.
Maxsus hodisalar
new Event, CustomEvent (detail bilan), dispatchEvent, bubbles/cancelable, ichma-ich hodisalar va o'z komponentlaringda maxsus hodisalar bilan ishlash.
UI hodisalari
Sichqoncha hodisalari
mousedown/up, click, dblclick, contextmenu tartibi; qaysi tugma bosilgani (button), koordinatalar clientX/Y va pageX/Y, hamda shiftKey, ctrlKey, altKey, metaKey modifikator tugmalari.
mouseover/out, mouseenter/leave
mouseover/mouseout hodisalari va relatedTarget xossasi; kursor bolalar elementlar ustidan o'tganda yuzaga keladigan muammolar; bubbling qilmaydigan mouseenter/mouseleave hodisalari.
Drag'n'Drop (sichqoncha bilan)
mousedown โ mousemove โ mouseup algoritmi asosida element sudrash; brauzerning standart ondragstart harakatini o'chirish; pointer-events va document.elementFromPoint yordamida nishonlarni (droppable) aniqlash.
Pointer hodisalari
pointerdown/move/up va boshqa Pointer Events; pointerId, pointerType, isPrimary xossalari; setPointerCapture; sichqoncha, sensor va qalam (stylus) hodisalarini yagona API'da birlashtirish.
Klaviatura: keydown va keyup
keydown va keyup hodisalari; event.key (belgi) va event.code (fizik tugma) o'rtasidagi farq; avto-takror (auto-repeat); standart harakatlar va ularni oldini olish; amaliy qiyosiy misollar.
Skroll
scroll hodisasi; skrollni event bilan to'xtatib bo'lmasligi va uni oldini olishning to'g'ri usullari; "cheksiz sahifa" (infinite scroll) g'oyasi va uni amalga oshirish yondashuvi.
Formalar va boshqaruv elementlari
Forma xossalari va metodlari
document.forms, form.elements, input/textarea/select/option bilan ishlash: value, checked, selectedIndex va options orqali qiymatlarni o'qish va yozish.
Fokuslash: focus/blur
focus()/blur() metodlari, focus/blur hodisalari, tabindex bilan fokusni boshqarish, focusin/focusout orqali delegatsiya va validatsiya misoli.
Hodisalar: change, input, cut, copy, paste
change va input hodisalarining farqi, matn kiritishni kuzatish, cut/copy/paste va ClipboardEvent bilan almashish buferini boshqarish.
Forma yuborish: submit hodisasi va metod
submit hodisasi, Enter bilan yuborish, form.submit() metodi, yuborishdan oldingi validatsiya va preventDefault bilan oldini olish.
Hujjat va resurs yuklanishi
Sahifa: DOMContentLoaded, load, beforeunload, unload
HTML sahifaning hayot sikli: DOMContentLoaded, load, beforeunload va unload hodisalari qachon yuz beradi, readyState, sahifadan chiqishdan oldin ogohlantirish va sendBeacon.
Skriptlar: async, defer
Skriptlarni yuklashda bloklovchi muammo, defer va async atributlari, ularning farqi, dinamik skriptlar va qaysi birini qachon ishlatish.
Resurs yuklash: onload va onerror
Tashqi resurslarni (skript, rasm, iframe) yuklash holatini kuzatish: onload va onerror hodisalari, crossorigin atributi va resursning tayyor bo'lishini aniqlash.
Qo'shimcha brauzer mavzulari
Mutation observer
MutationObserver bilan DOM daraxtidagi o'zgarishlarni โ element qo'shilishi, o'chirilishi, atribut va matn o'zgarishlarini โ kuzatish.
Tanlash va Range
Range obyekti bilan hujjatning bir qismini belgilash, Selection obyekti orqali foydalanuvchi tanlagan matnni o'qish va dastur orqali tanlash o'rnatish.
Hodisalar tsikli: mikro va makrovazifalar
Event loop โ brauzer va Node.js kodni qanday tartibda bajarishi; makrovazifa va mikrovazifa navbatlari, render, setTimeout(0) va og'ir hisob-kitobni bo'lish.
3-qism: Qo'shimcha bo'limlar
Oynalar va freymlar
Popup oynalar va window metodlari
window.open bilan yangi oyna ochish, popup bloklovchilar, oyna sozlamalari (width, height, left, top), ochilgan oynaga murojaat qilish, close, focus va blur metodlari.
Oynalararo aloqa
Same Origin (bir xil manba) siyosati, iframe va contentWindow, boshqa manbadagi oynalar bilan xavfsiz aloqa: postMessage va message hodisasi, origin tekshirish orqali xavfsizlik.
Clickjacking hujumi
Clickjacking (bosishni o'g'irlash) hujumining g'oyasi, saytni ko'rinmas iframe ustiga qo'yish, va himoya usullari: X-Frame-Options, CSP frame-ancestors, samesite cookie.
Ikkilik ma'lumot va fayllar
ArrayBuffer, TypedArray
Ikkilik ma'lumotning asosi: ArrayBuffer xotira bloki, uning ustidagi ko'rinishlar (Uint8Array, Int32Array va boshqalar), indeks bilan ishlash, TypedArray metodlari va DataView.
TextDecoder va TextEncoder
Ikkilik ma'lumotni matnga aylantirish: TextDecoder baytlarni satrga o'giradi, TextEncoder esa satrni baytlarga. UTF-8 kodlash bilan amaliy ishlash.
Blob
Blob obyekti โ ikkilik katta obyektlar bilan ishlash: konstruktor, type (MIME turi), slice bilan bo'laklash, URL.createObjectURL orqali havola yaratish, fayl yuklab olish va rasmga aylantirish.
File va FileReader
Foydalanuvchi tanlagan fayllar bilan ishlash: File obyekti (input.files), FileReader bilan faylni o'qish (readAsText, readAsDataURL, readAsArrayBuffer) va yuklash jarayonini kuzatish.
Tarmoq so'rovlari
Fetch
Zamonaviy fetch() metodi bilan serverga so'rov yuborish: response.status/ok, javobni o'qish (json/text), async/await va xatoliklarni boshqarish.
Fetch: so'rovlar va JSON
POST so'rov yuborish: method, headers, body parametrlari; JSON.stringify bilan ma'lumot yuborish; Content-Type sarlavhasining ahamiyati.
FormData
FormData obyekti bilan forma ma'lumotlarini yuborish: HTML formadan yaratish, append/set/delete metodlari, fayl yuklash va fetch bilan jo'natish.
Fetch: yuklanish jarayoni
Katta javoblarni yuklashda jarayonni (progress) kuzatish: response.body va ReadableStream, getReader(), Content-Length va foizni hisoblash.
XMLHttpRequest
Tarmoq so'rovlarining eski usuli: open/send, onload/onerror/onprogress hodisalari, sinxron va asinxron rejimlar, fetch bilan solishtirish.
WebSocket
Server bilan real vaqtda ikki tomonlama aloqa: new WebSocket, open/message/close/error hodisalari, send, qayta ulanish va fetch bilan farqi.
Brauzerda ma'lumot saqlash
Cookie
document.cookie orqali cookie'larni o'qish va yozish, path/domain/expires/max-age, secure va samesite bayroqlari, httpOnly, cheklovlar va yordamchi funksiyalar.
localStorage va sessionStorage
Web Storage: setItem/getItem/removeItem/clear metodlari, kalitlar bo'yicha aylanish, obyektlarni JSON orqali saqlash, storage hodisasi va ikkalasining farqi.
IndexedDB
Brauzerdagi kuchli ma'lumotlar bazasi: obyekt ombori, versiyalar, transaksiyalar, qo'shish/o'qish, indekslar, promise o'ramchisi va uni qachon ishlatish.
Muntazam ifodalar (RegExp)
Muntazam ifodalar: kirish
Muntazam ifoda (RegExp) nima, /pattern/flags sintaksisi, g/i/m/s/u/y flaglari, str.match, str.replace, str.search, regexp.test metodlari va regexp yaratishning ikki usuli.
Belgilar sinflari
Belgi sinflari \d \D \s \S \w \W, ularning teskarilari, nuqta (.) va s flagi, unicode haqida qisqacha hamda telefon raqamini ajratish kabi amaliy misollar.
Langarlar: ^ va $, ko'p qatorli rejim
Boshlanish langari ^, tugash langari $, to'liq moslikni tekshirish, ko'p qatorli m rejimi va so'z chegarasi \b.
Kvantorlar: +, *, ?, {n,m}
Miqdor belgilari bilan belgilar nechta marta takrorlanishini boshqarish; ochko'z (greedy) va dangasa (lazy) rejimlar; raqam va HTML teglarni ajratish misollari.
Guruhlash va tutish
Qavslar bilan qismlarni guruhlash; guruh natijalari (match) va nomli guruhlar (?<name>); replace da $1 va $<name>; tutmaydigan guruh (?:...).
Alternatsiya (yoki) |
Vertikal chiziq | bilan bir necha variantdan birini tanlash; qavs bilan chegaralash; sana va vaqt misollari; tez-tez uchraydigan tuzoqlar.
Lookahead va lookbehind
Oldinga qarash x(?=y), x(?!y) va orqaga qarash (?<=y)x, (?<!y)x; narxni ajratish misoli; bu vositalar qachon kerak bo'ladi.
4-qism: Amaliy vositalar
Git va GitHub
Git va GitHub nima?
Versiya nazorati (version control) nima va nega kerak; Git โ mahalliy VCS; GitHub โ bulutli platforma; ularning farqi; repozitoriy, commit va branch tushunchalari; muqobil xizmatlar (GitLab, Bitbucket).
Git o'rnatish va sozlash
Git'ni Windows, macOS va Linux'ga o'rnatish; git --version orqali tekshirish; birinchi sozlash โ git config bilan ism va elektron pochta; SSH kalit yaratish (ssh-keygen) va GitHub'ga qo'shish; git config --list.
Git asosiy buyruqlari
git init bilan repozitoriy yaratish; git status; git add (fayl va nuqta); git commit -m; git log va --oneline; ishchi katalog, staging va repozitoriy tushunchalari; faylni o'zgartirish oqimi; git diff bilan farqlarni ko'rish.
Branch va birlashtirish (merge)
Branch (shox) nima va nega kerak, git branch, git checkout, zamonaviy git switch, git checkout -b bilan yangi branch yaratish, branch'larni git merge bilan birlashtirish, merge konflikti va uni hal qilish, keraksiz branch'ni git branch -d bilan o'chirish.
GitHub bilan ishlash: clone, push, pull
Remote (masofaviy ombor) tushunchasi, git remote add origin, mavjud omborni git clone bilan nusxalash, git push -u origin main bilan kodni yuborish, git pull bilan yangilanishlarni olish, git fetch va git pull farqi, mahalliy va masofaviy omborlarni sinxronlash.
Jamoa bilan ishlash: fork va Pull Request
Fork (o'zingizga nusxa ochish) tushunchasi, Pull Request (PR) nima va uning to'liq jarayoni, issue (muammo) yaratish, kod ko'rib chiqish (code review), branch'da ishlab PR ochish oqimi, upstream bilan sinxronlash.
Foydali vositalar: .gitignore, undo, stash
.gitignore fayli va namunasi, allaqachon kuzatilayotgan faylni git rm --cached bilan chiqarish, o'zgarishni bekor qilish (git restore, git reset, git revert farqi), git stash bilan ishni vaqtincha yashirish, git tag qisqacha, yaxshi commit xabari yozish qoidalari.
Docker
Docker nima? Konteynerlar
Docker qanday muammoni hal qiladi, konteyner nima, virtual mashina bilan farqi, image va container tushunchalari, Docker Hub va nega Docker foydali.
Docker o'rnatish va birinchi konteyner
Docker'ni o'rnatish (Desktop va Linux engine), versiyani tekshirish, hello-world, nginx va ubuntu bilan birinchi konteynerlar hamda -d, -p, --name bayroqlari.
Asosiy Docker buyruqlari
Kundalik ishda kerak bo'ladigan buyruqlar: ps, images, pull, run bayroqlari (-d -p -e -v --name), stop/start/rm, rmi, exec -it va logs.
Dockerfile va o'z image'ingizni yaratish
Dockerfile nima, asosiy ko'rsatmalar (FROM, WORKDIR, COPY, RUN, EXPOSE, CMD, ENV), docker build, qatlamlar va kesh, .dockerignore hamda Node.js ilova uchun namuna.
Docker Compose
Bir nechta konteynerni birga boshqarish, docker-compose.yml tuzilishi (services, ports, volumes, environment, depends_on), compose up/down va Node + Postgres namunasi.
Volume va tarmoq (network)
Konteyner ma'lumoti yo'qolishi muammosi, volume va bind mount, docker volume buyruqlari, konteynerlararo tarmoq va xizmat nomi orqali ulanish.
Nginx
Nginx nima?
Veb-server tushunchasi, Nginx tarixi va mashhurligi, uning asosiy vazifalari (statik fayl, reverse proxy, load balancer, SSL termination) va Apache bilan qisqa taqqoslash.
Nginx o'rnatish va boshqarish
Nginx'ni apt/yum orqali o'rnatish, systemctl bilan boshqarish (start/stop/restart/status), config testi (nginx -t), qayta yuklash (reload), fayl/papka joylashuvi va loglar.
Konfiguratsiya asoslari
nginx.conf tuzilishi, kontekstlar (main, events, http, server, location), direktiva sintaksisi, server bloki (listen, server_name, root, index) va location bloki asoslari.
Statik saytga xizmat ko'rsatish
Statik HTML/CSS/JS saytni Nginx orqali chiqarish: root va index, location bilan yo'llar, try_files, 404 sahifasi, gzip yoqish va kesh sarlavhalari. To'liq server bloki namunasi.
Reverse proxy va load balancing
Reverse proxy tushunchasi, proxy_pass bilan Node.js ilovaga so'rov uzatish, proxy_set_header (Host, X-Real-IP), upstream bloki bilan load balancing va usullar (round-robin, least_conn).
SSL/HTTPS sozlash
Nega HTTPS kerak, Let's Encrypt / certbot bilan bepul sertifikat, listen 443 ssl, ssl_certificate direktivalari, HTTP dan HTTPS ga yo'naltirish (return 301) va certbot --nginx.
Linux va terminal
Linux va terminal nima?
Operatsion tizim nima, Linux va uning distributivlari (Ubuntu, Debian, Fedora), shell va bash, terminal, GUI va CLI o'rtasidagi farq hamda nega dasturchiga terminal shart.
Fayl tizimi va navigatsiya
Linux fayl tizimi tuzilishi (/, /home, /etc), pwd, ls flaglari bilan, cd, mkdir, rmdir; mutlaq va nisbiy yo'llar; ~, . va .. belgilari.
Fayllar bilan ishlash
touch, cp, mv, rm (ehtiyotkorlik bilan), cat, less, head, tail, nano/vim, find, grep, wc va oqimlarni yo'naltirish (>, >>, |).
Ruxsatlar va egalik
rwx ruxsatlar, chmod (raqamli va belgili), chown, foydalanuvchi va guruh tushunchasi, sudo va root, su buyrug'i.
Jarayonlar va tarmoq
ps, top/htop, kill, fon rejimi (&), jobs, systemctl; tarmoq buyruqlari ping, curl, wget; paket menejeri apt (install/update).
Bash skript asoslari
Shebang (#!/bin/bash), chmod +x bilan ishga tushirish, o'zgaruvchilar, echo va read, if/else shartlari, for/while sikllari, funksiyalar va to'liq skript misoli.
5-qism: Backend dasturlash
Node.js va Express
Node.js nima?
Server tomonda JavaScript, V8 dvigateli, bir oqimli event loop, bloklamaydigan I/O, Node.js qachon ishlatiladi, o'rnatish va birinchi skript.
Modullar va npm
CommonJS (require/module.exports) va ESM (import/export), o'rnatilgan modullar, npm nima, npm init, package.json, npm install, node_modules, dependencies va npx.
Fayl tizimi va HTTP server
fs moduli (readFile/writeFile, sync va async), path moduli, http moduli bilan oddiy server yaratish, req va res obyektlari, portni tinglash.
Express asoslari
Nega Express, o'rnatish, birinchi ilova (app va app.listen), route (app.get), req va res obyektlari, res.send va res.json.
REST API yaratish
REST tamoyillari, GET/POST/PUT/DELETE, route parametrlari (:id), query, JSON tanasi, status kodlar va massivda oddiy CRUD API misoli.
Middleware va xatoliklar
Middleware nima, zanjir, next(), express.json(), express.static(), maxsus logger middleware, xatolarni boshqarish middleware va 404.
Ma'lumotlar bazalari
Ma'lumotlar bazasi nima?
Ma'lumotlar bazasi nima uchun kerak, DBMS (ma'lumotlar bazasini boshqarish tizimi) nima, relatsion (SQL) va NoSQL bazalar farqi, jadval/qator/ustun tushunchalari, mashhur bazalar (PostgreSQL, MySQL, MongoDB) va qachon qaysi birini tanlash.
SQL asoslari
SQL tilining asosiy buyruqlari: CREATE TABLE (ma'lumot turlari INT, VARCHAR va boshqalar), INSERT INTO, SELECT, WHERE (shartlar, AND/OR, LIKE), UPDATE, DELETE, ORDER BY va LIMIT. Real misollar bilan.
SQL: bog'lanishlar va JOIN
Jadvallarni bog'lash: PRIMARY KEY va FOREIGN KEY, munosabatlar (1:N), JOIN turlari (INNER, LEFT, RIGHT), GROUP BY va agregat funksiyalar (COUNT, SUM, AVG), HAVING orqali guruhlarni filtrlash.
MongoDB (NoSQL)
MongoDB asoslari: kolleksiya va hujjat (JSON-simon), insertOne/insertMany, find/findOne (filtrlar), updateOne ($set), deleteOne, so'rov operatorlari ($gt, $in, $lt), va SQL bilan bosqichma-bosqich taqqoslash.
Node.js bilan bazaga ulanish
Node.js'dan PostgreSQL'ga pg kutubxonasi orqali ulanish, so'rov yuborish, parametrlangan so'rovlar bilan SQL injection'dan himoyalanish, async/await bilan to'liq CRUD misoli, connection pool va MongoDB uchun mongoose'ga qisqacha nazar.
Web xavfsizligi va autentifikatsiya
Web xavfsizligi asoslari
Nega xavfsizlik muhim, CIA triadasi, "foydalanuvchiga hech qachon ishonma" tamoyili, HTTPS va OWASP asosidagi umumiy tahdidlar ro'yxati.
Autentifikatsiya va avtorizatsiya
Autentifikatsiya va avtorizatsiya farqi, parolni hech qachon ochiq saqlamaslik, bcrypt bilan hashlash va salt, sessiya (cookie) va token yondashuvlari, xavfsiz cookie.
JWT (JSON Web Token)
JWT tuzilishi (header.payload.signature), imzolash va tekshirish, Express'da login โ token โ himoyalangan route middleware, token muddati, afzallik va kamchiliklari.
XSS va CSRF
XSS nima va undan himoya (kirishni eskeyplash, CSP, textContent va innerHTML), CSRF nima va undan himoya (CSRF token, SameSite cookie). Himoya kodlari bilan.
SQL injection va boshqa himoyalar
SQL injection qanday yuzaga keladi va undan himoya (parametrlangan so'rovlar, ORM), hamda boshqa muhim amaliyotlar: validatsiya, eng kam imtiyoz, sirlarni .env, rate limiting, xatolarni yashirish.
NestJS
NestJS nima?
TypeScript uchun yaratilgan zamonaviy backend framework: Express ustida ishlaydigan, modulli va Angular'dan ilhomlangan arxitektura, nega u kerak va uni qanday o'rnatish mumkin.
Loyiha tuzilishi: Module, Controller, Service
NestJS'ning uch asosiy qurilish bloki: @Module modullarni tashkil qiladi, @Controller so'rovlarni qabul qiladi, @Injectable service biznes-logikani saqlaydi. Nest CLI bilan ularni generatsiya qilish.
Routing va DTO
HTTP metod dekoratorlari (@Get, @Post, @Put, @Delete), parametrlarni olish (@Param, @Query, @Body), DTO klasslari orqali ma'lumot shakli, class-validator va ValidationPipe bilan avtomatik validatsiya.
Provider va Dependency Injection
Dependency Injection nima va u NestJS'da qanday ishlaydi, provayderlar, konstruktor injektsiyasi, IoC konteyner, modullararo import/export orqali service'larni ulashish.
Ma'lumotlar bazasi (TypeORM)
NestJS'da ma'lumotlar bazasi bilan ishlash: TypeORM integratsiyasi, @Entity bilan jadval e'loni, Repository shabloni, to'liq CRUD service misoli va Prisma bilan qisqacha taqqoslash.
Middleware, Guard, Interceptor, Exception filter
NestJS so'rovni qayta ishlash quvuri: Middleware, autentifikatsiya uchun Guard (@UseGuards), ma'lumotni o'zgartiruvchi Pipe, javobni boyituvchi Interceptor va xatolarni tutuvchi Exception filter.
6-qism: Frontend asoslari
HTML
HTML nima?
HTML โ veb-sahifalarni belgilash tili. Teg, element va atribut tushunchalari, HTML hujjatining skeleti (DOCTYPE, html, head, body), title va meta teglari, hamda birinchi sahifani yozish.
Asosiy teglar
Eng ko'p ishlatiladigan HTML teglari: sarlavhalar (h1-h6), paragraflar, qalin va kursiv matn (strong/em), ro'yxatlar (ul/ol/li), havolalar (a), rasmlar (img), div va span konteynerlari, hamda br va hr.
Formalar
Foydalanuvchidan ma'lumot yig'ish uchun formalar: form tegi (action, method), input turlari (text, password, email, checkbox, radio, number, date), label, select/option, textarea, tugmalar hamda required va boshqa validatsiya atributlari.
Semantik HTML
Nega semantik teglar muhim; sahifa tuzilishi teglari (header, nav, main, section, article, aside, footer); foydalanish qulayligi (a11y) asoslari; SEO uchun foydasi va "div sho'rvasi"dan qochish.
CSS
CSS nima?
CSS โ veb-sahifalarni bezash tili. Sintaksis (selektor { xossa: qiymat; }), CSS'ni HTML'ga ulash usullari (inline, internal, external), asosiy selektorlar (element, class, id), ularni kombinatsiyalash va spetsifiklik tushunchasi.
Box model
CSS'da har bir element to'rtburchak qutidir. Content, padding, border va margin qatlamlari; width/height; box-sizing: border-box; display xossasi (block, inline, inline-block, none) va overflow.
Flexbox
display: flex bilan elementlarni bir o'lchamli joylashtirish. Asosiy va ko'ndalang o'q, justify-content, align-items, flex-direction, flex-wrap, gap; flex-grow/shrink/basis va amaliy joylashuvlar.
CSS Grid
display: grid bilan ikki o'lchamli joylashuv. grid-template-columns/rows (fr, repeat, minmax), gap, elementlarni joylashtirish (grid-column/row), Flexbox bilan farqi va qachon qaysi birini tanlash.
Responsive dizayn
Sayt barcha ekran o'lchamlariga moslashishi. Birliklar (px, %, em, rem, vw/vh), media query (@media), mobile-first yondashuv, moslashuvchan rasm va matn, breakpointlar.
Ranglar, shrift va bezaklar
color/background va rang formatlari (hex, rgb, hsl); shrift (font-family, size, weight, line-height); matn bezaklari (text-align, text-decoration); border-radius, box-shadow va transition asoslari.
TypeScript
TypeScript nima?
TypeScript โ JavaScript ustiga turlarni qo'shadigan til; nega kerak, o'rnatish, tsc bilan kompilyatsiya va .ts fayllari.
Asosiy turlar
Tur izohlari, string/number/boolean, massiv va tuple, any va unknown, void, null/undefined, tur xulosasi va literal turlar.
Interfeys va tip aliaslari
interface bilan obyekt shaklini tavsiflash, type alias, ixtiyoriy va readonly xossalar, union va intersection, interface vs type.
Funksiyalar va generiklar
Parametr va qaytish turlari, ixtiyoriy va standart parametrlar, generiklar, generic interfeys va klass, cheklovlar (extends).
Klasslar va konfiguratsiya
TS klasslari, kirish modifikatorlari (public/private/protected/readonly), implements, enum va tsconfig.json asoslari.
React
React nima?
React โ foydalanuvchi interfeysi uchun kutubxona; komponentga asoslangan, deklarativ yondashuv, virtual DOM, SPA tushunchasi va Vite bilan o'rnatish.
JSX va komponentlar
JSX sintaksisi, funksional komponent yozish, komponentni createRoot bilan render qilish, bir root element qoidasi, className va {ifoda} joylashtirish.
Props
Komponentga ma'lumot uzatish, props obyekti, destructuring, children propi va propslarning faqat o'qish uchun (immutable) ekanligi.
State va useState
Holat (state) tushunchasi, useState hook, holatni yangilash, onClick bilan hodisalarni qayta ishlash, re-render va hisoblagich misoli.
useEffect va yon effektlar
useEffect hook, dependency array, fetch bilan ma'lumot yuklash, cleanup funksiya va effekt qachon ishga tushishi.
Ro'yxatlar va formalar
Massivni map bilan render qilish, key propi, shartli render (&& va ternar), controlled input (value + onChange) va oddiy TODO ilovasi.
7-qism: Testlash va yetkazib berish
Testlash (Jest)
Nega test yozamiz?
Qo'lda testning muammolari, avtomatik testning foydasi, test turlari, test piramidasi, TDD va mashhur vositalar.
Jest asoslari
Jest o'rnatish, test fayllar, test()/it(), expect va matcherlar, describe bloki, npm test bilan ishga tushirish.
Async testlar va mock
async/await testlari, resolves/rejects, jest.fn mock funksiyalar, jest.mock bilan modul mock qilish, beforeEach/afterEach va spy.
Coverage va yaxshi amaliyot
Kod qamrovi (--coverage), AAA namunasi, nimani test qilish kerak, yaxshi test belgilari va to'liq test misoli.
CI/CD (GitHub Actions)
CI/CD nima?
Uzluksiz integratsiya (CI) va uzluksiz yetkazib berish (CD): qo'lda jarayon muammosi, pipeline tushunchasi va vositalar.
GitHub Actions asoslari
.github/workflows/ papka, workflow YAML tuzilishi (name, on, jobs, steps), runner va birinchi workflow.
Avtomatik test va build
Node o'rnatish, npm ci, npm test, build, matrix (bir nechta Node versiyasi), kesh va status badge.
Avtomatik deploy
Secrets, ${{ secrets.X }}, environment, shartli ishga tushirish, deploy qadami (GitHub Pages / SSH) va CI+CD birga.
Loyihani deploy qilish
Deploy nima?
Ishlab chiqarish (production) muhiti, lokalxost va server farqi, server turlari (VPS va PaaS/bulut), domen va DNS haqida umumiy tushuncha hamda deploy jarayonining bosqichlari.
VPS serverga deploy qilish
VPS olish (DigitalOcean/Hetzner), SSH bilan ulanish, Node.js o'rnatish, kodni git clone qilish, muhit o'zgaruvchilari (.env), PM2 bilan doimiy ishga tushirish va Nginx reverse proxy sozlash.
Frontend/statik saytni deploy qilish
Build jarayoni (npm run build), statik hosting platformalari (Netlify, Vercel, GitHub Pages), SPA marshrutlash (routing) sozlamalari va frontend uchun muhit o'zgaruvchilari.
Domen ulash va HTTPS
Domen sotib olish, DNS yozuvlari (A va CNAME), domenni serverga ulash, Let's Encrypt/certbot bilan bepul SSL sertifikat olish va HTTP dan HTTPS ga avtomatik yo'naltirish.