So'zboshi
Foydalanuvchilar sevib foydalanadigan ilovalarni yaratish uchun veb-dasturchi sifatida tushunishingiz kerak bo'lgan narsalar juda ko'p. Ayniqsa, React olamida siz uchun mavjud bo'lgan materiallar boyligi muammoning bir qismidir. Ularning hammasi ham bir-biriga mos kelmaydi va siz mavjud bo'lgan barcha qo'llanmalar va blog postlarini kezib, o'z yo'lingizni o'zingiz qurishingizga to'g'ri keladi. Bunda siz bir-biriga zid bo'lmagan va bilimlaringizda katta bo'shliqlar qoldirmaydigan o'quv dasturini bo'laklardan yig'ib olishga umid qilasiz. Va siz doim o'rganayotgan narsangiz eskirganidan xavotirda bo'lasiz.
Aynan shu yerda Tejas Kumar ushbu kitob bilan yordamga keladi. Tejas ko'p yillik React tajribasiga ega va sizga mustahkam bilim poydevorini beradigan mavzularga chuqur kirib borish uchun katta kuch sarflagan. U tajribali muhandis va sizga React bilan ishlashda ishonch hissini beradigan bilimlar bulog'idir. Men yillar davomida Tejas bilan ochiq kod (open source
), konferensiyalardagi ma'ruzalar, ta'limiy kontent yaratish kabi turli sohalarda va shaxsiy darajada muloqot qilish baxtiga muyassar bo'lganman va umid qilamanki, siz qo'lingizda ajoyib inson bo'lish bilan birga, iqtidorli shaxs tomonidan yaratilgan kitobni ushlab turganingizni tushunasiz.
Ushbu kitobda siz, ehtimol, boshqa joyda duch kelmaydigan mavzularga sho'ng'iysiz. Bu mavzular sizga to'g'ri fikrlash modeli bilan "React'cha Fikrlash"ga yordam beradi. Siz React'ning aslida nima maqsadda yaratilganini tushunib yetasiz, bu esa React'ni muammolarni hal qilish vositasi sifatida ko'rib chiqayotganda sizga yaxshi tayanch nuqtasini beradi. React bo'shliqda ixtiro qilinmagan va uning kelib chiqish tarixini tushunish, sizga React qanday muammolarni hal qilish uchun mo'ljallanganligini bilishga yordam beradi. Shunda siz to'rtburchak teshikka yumaloq qoziqni tiqishdan saqlanasiz.
Siz JSX, virtual DOM, moslashtirish (reconciliation
) va konkurent React kabi fundamental konsepsiyalarni tushunasiz, bu esa sizga ushbu vositadan yanada samaraliroq foydalanishga yordam beradi. Men har doim biror vosita bilan tajribangizni oshirishning eng yaxshi yo'li — bu o'sha vositaning qanday ishlashini tushunish, deb ishonganman. Shunday ekan, agar siz hozirgacha React'dan yillar davomida foydalanib kelayotgan bo'lsangiz ham, bu bo'limlar sizning ongingizni yangi imkoniyatlar va tushunchalarga ochadi. Chunki siz endi shunchaki qismlarni bir-biriga ulab, natija ijobiy bo'lishiga umid qilish (barmoqlarni kesishgan holda) o'rniga, React'ni haqiqatan ham tushuna boshlaysiz.
Siz professionallar samarali va kuchli abstraksiyalar yaratish uchun ishlatadigan pattern'larni kashf etasiz. React'ning o'zi juda tez ishlaydigan UI kutubxonasi, lekin murakkab ilovalar yaratayotganingizda unumdorlikni optimallashtirishga ehtiyoj sezadigan paytlaringiz bo'ladi. Tejas sizga buni React'da mavjud bo'lgan memoizatsiya, kerakli vaqtda yuklash (lazy loading
) va state
'ni boshqarish usullari yordamida qanday qilishni ko'rsatib beradi. Bundan tashqari, siz ekotizimdagi eng yaxshi kutubxonalar tarkibiy komponentlar (compound components
), render props, prop getters, state
reduserlari va boshqariladigan props (control props
) kabi pattern'lar bilan qanday ishlashini tushunasiz. Bular React ilovalarini yaratishda sizning asboblar to'plamingizdagi hal qiluvchi vositalardir. Agar siz shunchaki tayyor yechimlardan foydalanayotgan bo'lsangiz ham, o'sha kuchli abstraksiyalar qanday ishlashini tushunish sizga ulardan yanada samaraliroq foydalanishga yordam beradi.
Biroq Tejas nazariy React'dan tashqariga chiqadi va siz eng yaxshi foydalanuvchi bilan ishlash qulayligini yaratish uchun React'ning to'liq stek imkoniyatlaridan foydalanishingiz uchun muhim bo'lgan Remix va Next.js kabi amaliy freymvorklar bilan tanishasiz. React'ning boshidanoq mavjud bo'lgan serverda render qilish imkoniyatlari bilan siz React'dan ham front-end, ham back-end'da butun foydalanuvchi bilan ishlash qulayligini yaratishda o'z taqdiringizni o'zingiz boshqarishingiz mumkin. Va siz, shuningdek, React foydalanuvchi bilan ishlash qulayligini yangi bosqichga olib chiqish uchun ishlatayotgan Server Komponentlari va Server Harakatlari (Server Actions
) kabi eng ilg'or texnologiyalar bilan ham tanishasiz.
Ishonchim komilki, Tejas siz uchun tayyorlagan narsalarni o'qib chiqqaningizdan so'ng, siz React bilan ajoyib ilovalar yaratishda muvaffaqiyat qozonish uchun kerakli bilimlarga ega bo'lasiz.
Sizga dunyodagi eng keng qo'llaniladigan UI kutubxonasi — React bilan o'rganish tajribangizda eng yaxshi tilaklarni tilayman. Sayohatdan zavqlaning!
— Kent C. Dodds https://kentcdodds.com
Muqaddima
Ushbu platformamiz React'dan qanday foydalanishni o'rganmoqchi bo'lganlar uchun emas. Agar siz React bilan tanish bo'lmasangiz va darslik izlayotgan bo'lsangiz, react.dev saytidagi React dokumentatsiyasi boshlash uchun yaxshi bo'lishi mumkin. Aksincha, bu kitob qiziquvchanlar uchun: React'dan qanday foydalanishdan ko'ra, React qanday ishlashi bilan qiziqqan odamlar uchun yozilgan.
Biz birgalikda React tushunchalari orqali sayohat qilib, ularning qanday ishlashini tushunamiz va hammasi bir-biri bilan qanday mos kelib, React yordamida dasturlar yaratishga imkon berishini o'rganamiz. Asosiy mexanizmlarni anglash uchun zarur bo'lgan aqliy modellarini rivojlantirib, React va uning ekotizimi haqida chuqurroq bilimga ega bo'lamiz.
Ushbu platformadagi o'quvchilarimizni quyidagilarni biladi deb taxmin qilamiz: brauzerlar veb-sahifalarni render qiladi. Veb-sahifalar CSS bilan stil berilgan HTML dokumentlari va JavaScript bilan interaktiv qilinadi. Shuningdek, buni boshlashdan avval, bizda React'ni qanday ishlatish haqida biroz tushuncha, bilimlar va bir yoki ikkita React dasturini yaratgan bo'lishimiz kerak. Ideal holda, ba'zi React dasturlarimiz production (foydalanish) holatida bo'lishi lozim.
Dastavval, biz React bilan tanishamiz va uning tarixiga qisqacha nazar tashlaymiz, 2013-yilda ilk bor ochiq manba sifatida chiqarilgan vaqtga qaytamiz. Shundan so'ng, Biz JSX qanday ishlashi haqidagi kompilyator nazariyasiga kirib boramiz, fiber'lar haqida gaplashamiz va uning parallel(concurrent) dasturlash modelini chuqur tushunamiz. Shunday qilib, React.memo
va useTransition
kabi kuchli primitivlar orqali qanday memoizatsiya qilish va qaysi render ishlarini keyinga qoldirish kerakligini o'rganamiz.
So'ngra, React uchun yaratilgan freymvorklarni o'rganamiz: ularning qanday muammolarni hal qilishi va buni qanday mexanizmlar orqali amalga oshirishi. Biz buni barcha veb-ilovalar uchun dolzarb bo'lgan uchta muammoni - serverda render qilish, routing qilish va ma'lumotlarni olish (data fetching) - hal qiladigan o'z freymvorkimizni yozish orqali amalga oshiramiz.
Bu muammolarni o'zimiz hal qilganimizda, freymvorklar qanday ishlashini tushunimiz ancha qulayroq bo'ladi. Shuningdek, biz React server komponentlari (RSC) va serverdagi harakatlar (server actions) haqida chuqurroq bilib olamiz, keyingi avlod vositalarining (next-generation tooling), masalan, to'plash vositalari(bundlers) va izomorfik router'larning rolini anglaymiz.
Yakunida esa, React'dan tashqariga nazar tashlab, Vue, Solid, Angular, Qwik va boshqa alternativlarni o'rganamiz. React'ning kam tafsiliy darajadagi (coarse-grained) reaktivlik modeliga qarshi yuqori tafsiliy darajada (fine-grained) bo'lgan reaktivlik modellarini o'rganamiz. Shuningdek, React'ning signalga javobi bo'lgan Forget vositalar zanjiri va u signal bilan qanday solishtirilishini ko'rib chiqamiz.
Oldinda juda ko'p mavzular bor, shuning uchun vaqtni behuda sarflamaylik va tezroq boshlaylik!
Minnatdorchilik
Bu men yozgan ilk kitob va men bu ishni yolg'iz qilmaganimdan cheksiz minnatdorman. Siz o'qishni boshlayotgan narsa — bu ishni amalga oshirish uchun birgalikda, hamjihatlikda ishlagan bir qator yorqin insonlarning birlashgan sa'y-harakatidir. Ushbu sahifada biz bu insonlarga ushbu matnlar to'plamiga qo'shgan hissalari uchun o'z minnatdorchiligimizni bildiramiz.
Iltimos, bu qismni o'tkazib yubormang, chunki bu insonlar sizning e'tiboringizga va minnatdorchiligingizga loyiqdir. Keling, avvalo, menga bevosita ushbu kitobda yordam bergan insonlardan boshlaylik:
-
Birinchi o'rinda doim rafiqam Lea. Men bu kitobni yozishga ko'p vaqt sarfladim, ko'pincha birga o'tkazadigan vaqtimiz va oilaviy vaqtimiz hisobiga. Mavzuga bo'lgan ishtiyoqim va uni barchangiz bilan bo'lishish istagim tufayli, bu kitob ustida ishlash ta'til vaqtimizni va rafiqam bilan birga bo'lish uchun boshqa imkoniyatlarni biroz "yeb qo'ydi". U esa faqat qo'llab-quvvatladi va ruhlantirdi, men buning uchun undan juda minnatdorman.
-
Shira Evans, ushbu kitobdagi rivojlanish bo'yicha muharririm. O'Reilly'dan Shira bilan ishlash juda maroqli bo'ldi va u doimo qo'llab-quvvatlovchi, ruhlantiruvchi va tushunadigan inson bo'ldi, hatto React'da "Forget" va server harakatlari (
server actions
) kabi yangi narsalar paydo bo'lib, bir necha kechikishlarga duch kelganimizda ham. Shira sabr bilan barchasini yengib o'tishimizga yordam berdi va men undan juda minnatdorman. -
Mening aziz do'stim va akam Kent C. Dodds (@kentcdodds)'ga ushbu kitob doirasidan tashqaridagi doimiy ustozligi va ushbu kitobdagi so'zboshisi uchun. Kent yillar davomida aziz do'st va ustoz bo'lib kelmoqda va men uning doimiy qo'llab-quvvatlashi va ruhlantirishi uchun juda minnatdorman.
-
Retsenzentlar. Bu kitob men bilan hamkorlik qilgan retsenzentlarning aqlbovar qilmas g'amxo'rligi va detallarga e'tibori bo'lmaganida imkonsiz bo'lar edi:
- Adam Rackis (@adamrackis)
- Daniel Afonso (@danieljcafonso)
- Fabien Bernard (@fabien0102)
- Kent C. Dodds (@kentcdodds)
- Mark Erikson (@acemarke)
- Lenz Weber-Tronic (@phry)
- Rick Hanlon II (@rickhanlonii)
- Sergeii Kirianov (@SergiiKirianov)
- Matheus Albuquerque (@ythecombinator)
- Meta'dagi React jamoasiga React ustidagi doimiy ishlari, React bilan nimalar qilish mumkinligi chegaralarini doimiy ravishda kengaytirayotganlari va o'zlarining yorqinligi, ixtirochiligi va muhandislik zukkoligi orqali undan foydalanishni maroqli qilayotganlari uchun. Xususan, Dan Abramov (@dan_abramov)'ga React Server Komponentlari arxitekturasidagi
bundler
'ning rolini tushuntirishga vaqt ajratgani, shuningdek, React Server Komponentlariga bag'ishlangan 9-bobning salmoqli qismiga hissa qo'shgani uchun.
Nihoyat, men sizga, o'quvchiga, ushbu kitobga bo'lgan qiziqishingiz uchun minnatdorchilik bildirmoqchiman. Umid qilamanki, uni yozish men uchun qanchalik zavqli bo'lgan bo'lsa, uni o'qish ham siz uchun shunchalik foydali bo'ladi.