React nima?
Agar siz JavaScript'ni yaxshi bilsangiz, React โ sizning keyingi qadamingiz bo'lishi mumkin. React โ bugungi kunda frontend dunyosining eng mashhur vositalaridan biri. U yordamida oddiy tugmadan tortib, butun boshli katta ilovagacha qurish mumkin. Ushbu bobda biz React'ni JavaScript bilgan kishi nuqtai nazaridan, nol darajadan boshlab o'rganamiz.
React nima va u nima uchun kerak?
React โ bu Facebook (hozirgi Meta) tomonidan yaratilgan, foydalanuvchi interfeysini (User Interface, qisqacha UI) qurish uchun mo'ljallangan JavaScript kutubxonasi. Bu yerda "kutubxona" so'ziga e'tibor bering โ React o'zini freymvork emas, aynan kutubxona deb ataydi.
Nima uchun bu ajratish muhim? Oddiy JavaScript va DOM bilan katta ilova yozganingizda, quyidagi muammoga duch kelasiz: interfeysning har bir bo'lagini qo'lda yangilashingiz kerak. Foydalanuvchi biror tugmani bosdi โ siz document.querySelector orqali kerakli elementni topib, uning matnini o'zgartirasiz, boshqa element ko'rinishini yashirasiz, ro'yxatga yangi element qo'shasiz. Ilova o'sgani sari, bu qo'lda boshqaruv chalkash va xatolarga to'la bo'lib ketadi.
React ushbu muammoni tubdan boshqacha hal qiladi. Siz DOM'ni qo'lda o'zgartirmaysiz. Buning o'rniga, siz React'ga: "Ma'lumot shu holatda bo'lsa, ekran shunday ko'rinishi kerak" deb aytasiz. Qolganini React o'zi bajaradi.
Deklarativ yondashuv
React'ning asosiy g'oyasi โ deklarativlik (declarative). Buni tushunish uchun ikki yondashuvni solishtiramiz:
- Imperativ (imperative) yondashuv โ siz qadam-baqadam nima qilishni yozasiz. "Elementni top, matnini o'zgartir, klassini qo'sh". Oddiy DOM bilan ishlash aynan shunday;
- Deklarativ (declarative) yondashuv โ siz natija qanday ko'rinishini tasvirlaysiz. "Hisoblagich 5 bo'lsa, ekranda '5' yozilsin". Buni qanday amalga oshirishni React hal qiladi. React aynan shunday ishlaydi.
Masalan, oddiy DOM'da hisoblagich tugmasini yozish imperativ ko'rinishga ega:
// Oddiy DOM โ imperativ
let count = 0;
const tugma = document.querySelector("#tugma");
const matn = document.querySelector("#matn");
tugma.addEventListener("click", () => {
count = count + 1;
matn.textContent = count; // DOM'ni qo'lda yangilaymiz
});
React'da esa siz faqat "holat qanday bo'lsa, ekran shunday ko'rinadi" deb tasvirlaysiz. DOM'ni yangilashni butunlay React o'z zimmasiga oladi (bunga keyingi darslarda batafsil qaytamiz).
Komponentga asoslangan tuzilma
React'da butun interfeys komponentlardan (components) quriladi. Komponent โ bu interfeysning mustaqil, qayta ishlatiladigan bo'lagi. Tugma, forma, navigatsiya paneli, izohlar ro'yxati โ bularning har biri alohida komponent bo'lishi mumkin.
Katta ilova esa shu komponentlarning birlashmasidan iborat bo'ladi โ xuddi Lego bo'laklaridan qurilgan konstruksiya kabi:
- Har bir komponent o'zining ko'rinishi (markup) va mantig'ini (logic) bir joyda saqlaydi;
- Komponentlar qayta ishlatiladi โ bir marta yozib, ko'p joyda foydalanish mumkin;
- Komponentlar bir-biriga joylashadi (nesting) โ kattasi ichida kichigi bo'ladi;
- Har bir komponent alohida test qilinadi va tuzatiladi โ kod tartibli bo'ladi.
Masalan, oddiy ilova komponentlar daraxti sifatida tasavvur qilinadi:
App
|- Header
| |- Logo
| |- Navbar
|- Main
| |- PostList
| |- Post
| |- Post
|- Footer
Virtual DOM
React'ning tezligi ortida Virtual DOM texnologiyasi turadi. Uni tushunish uchun avval muammoni ko'raylik: haqiqiy DOM (brauzerdagi HTML elementlar daraxti) bilan ishlash sekin. Har safar DOM'ni o'zgartirganda, brauzer sahifani qayta hisoblab, qayta chizishi kerak bo'ladi.
React esa hiyla ishlatadi. U xotirada haqiqiy DOM'ning yengil nusxasini โ Virtual DOMni (oddiy JavaScript obyektlaridan iborat daraxt) saqlaydi. Jarayon shunday kechadi:
- Ma'lumot (holat) o'zgaradi;
- React yangi Virtual DOM daraxtini tuzadi;
- Uni eski Virtual DOM bilan solishtiradi โ bu jarayon reconciliation (moslashtirish) deb ataladi;
- Faqat o'zgargan qismlarni aniqlaydi;
- Haqiqiy DOM'da faqat shu farqlarnigina yangilaydi โ boshqa hech narsaga tegmaydi.
Natijada, siz butun ekranni qayta chizganingizda ham, React aslida haqiqiy DOM'ning faqat kerakli bo'lagini yangilaydi. Bu esa ilovani tez va samarali qiladi.
SPA โ bir sahifali ilova
React ko'pincha SPA (Single Page Application โ bir sahifali ilova) qurish uchun ishlatiladi. Bu tushunchani an'anaviy saytlar bilan solishtiramiz:
- An'anaviy sayt. Siz havolani bosganingizda brauzer serverdan butun yangi HTML sahifani so'raydi. Sahifa oynasi "miltillab" qayta yuklanadi;
- SPA. Server bir marta bitta HTML sahifa yuboradi. So'ngra barcha o'zgarishlar (sahifadan sahifaga o'tish, ma'lumot yangilash) JavaScript orqali sahifani qayta yuklamasdan amalga oshadi. Foydalanuvchi uchun bu โ tez va silliq, xuddi mobil ilovadagi kabi tajriba.
React'ning deklarativ va komponentga asoslangan tabiati aynan SPA qurish uchun juda qulay. Shu sababli u web-ilovalar (Gmail, Facebook, Trello va shu kabilar) yaratishda keng qo'llaniladi.
Nega React shunchalik mashhur?
React frontend dunyosining eng mashhur vositasi bo'lib qolishining bir necha sabablari bor:
- Katta hamjamiyat. Millionlab dasturchilar undan foydalanadi โ muammoga yechim topish oson, tayyor kutubxonalar ko'p;
- Ish o'rinlari. Bozorda React biladigan dasturchilarga talab juda yuqori;
- Boy ekotizim. Marshrutlash (React Router), holat boshqaruvi (Redux, Zustand), UI kutubxonalari โ hammasi tayyor;
- O'rganish materiali ko'p. Hujjatlar, videolar, kurslar โ behisob;
- Meta qo'llab-quvvatlaydi. Kutubxona doimiy rivojlanadi va yaxshilanadi.
React'ni o'rnatish (Vite bilan)
React ilovasini noldan qo'lda sozlash murakkab. Shuning uchun tayyor asboblardan foydalanamiz. Bugungi kunda eng tez va zamonaviy vosita โ Vite ("vit" deb o'qiladi). U yordamida yangi React loyihasini bir necha soniyada yaratish mumkin.
Loyihani yaratish uchun terminalda quyidagi buyruqni yozamiz (Node.js o'rnatilgan bo'lishi kerak):
npm create vite@latest my-app
Vite sizga bir necha savol beradi: qaysi freymvork (React'ni tanlaymiz) va qaysi variant (JavaScript yoki TypeScript). Tanlab bo'lgach, loyiha papkasiga kirib, bog'liqliklarni (dependencies) o'rnatamiz:
cd my-app
npm install
npm run dev
So'nggi buyruq mahalliy serverni ishga tushiradi (odatda http://localhost:5173 manzilida). Brauzerda ushbu manzilni ochsangiz, React ilovangiz ishlayotganini ko'rasiz.
create-react-app vositasi mashhur edi, lekin u sekin va eskirgan hisoblanadi. Yangi loyihalarda Vite ishlatish tavsiya etiladi โ u ancha tez.Xulosa
- React โ foydalanuvchi interfeysini qurish uchun JavaScript kutubxonasi;
- U deklarativ: siz natija qanday ko'rinishini tasvirlaysiz, DOM'ni yangilashni React hal qiladi;
- Interfeys komponentlardan quriladi โ mustaqil, qayta ishlatiladigan bo'laklar;
- Virtual DOM orqali React faqat o'zgargan qismlarni yangilaydi โ bu tezlik beradi;
- React ko'pincha SPA (bir sahifali ilova) qurishda ishlatiladi;
- Yangi loyihani Vite bilan yaratamiz:
npm create vite@latest.