Daraja 12 β Expert: Arxitektura va scaling¶
β¬ οΈ Oldingi: Daraja 11 β Production va ekotizim Β· π README
Bu darajada siz endi sintaksis emas, qarorlar haqida o'ylaysiz. Expert React dasturchisini ajratib turadigan narsa β kod yozish emas, to'g'ri arxitektura tanlash.
12.1. Loyiha strukturasi β feature-based¶
Kichik loyihalar components/, hooks/, utils/ bilan boshlanadi. Lekin o'sganda xususiyat (feature) bo'yicha tashkil qiling:
src/
βββ app/ β routing, providerlar
βββ shared/ β umumiy (ui, lib, hooks, api)
β βββ ui/ β Button, Input, Modal (dizayn tizimi)
β βββ lib/ β yordamchilar
β βββ api/ β API mijoz (axios/fetch wrapper)
βββ features/ β biznes xususiyatlari
β βββ auth/
β β βββ components/
β β βββ hooks/
β β βββ api/
β β βββ model/ β state, tiplar
β βββ students/
β βββ payments/
βββ pages/ β sahifalar (feature'larni birlashtiradi)
DDD bilan bog'liqlik: Bu Feature-Sliced Design (FSD) β frontend'ning DDD'siga eng yaqin metodologiya. Sizning backend tajribangiz (bounded context, domain ajratish) bu yerda to'g'ridan-to'g'ri qo'l keladi. Har bir
featureβ bu o'z domeniga ega modul. Qatlamlar orasida qat'iy bog'liqlik qoidalari (yuqori qatlam pastni biladi, aksincha emas).
12.2. Komponentlarni tashkil etish prinsiplari¶
- Container vs Presentational β mantiq (data fetching, state) va ko'rinish (sof UI)ni ajrating. Presentational komponentlar testlash va qayta ishlatish oson.
- Single Responsibility β bitta komponent bitta ishni qilsin. 200+ qatorli komponent β refactoring signali.
- Composition over configuration β 20 ta props o'rniga
childrenva compound pattern. - Colocation β bog'liq fayllarni yonma-yon saqlang (komponent + test + style + hook).
12.3. Dizayn tizimi (Design System)¶
Production ilova izchil UI talab qiladi. shadcn/ui (Radix asosida) β 2026'ning standarti: komponentlarni loyihangizga ko'chirib olasiz (kutubxona emas, kod), to'liq nazorat.
- Design tokens (rang, masofa, shrift) β markazlashtirilgan.
- Accessible by default (Radix primitivlar).
- Tailwind bilan birga.
12.4. Ilg'or React 19 imkoniyatlari¶
usehook β Promise yoki Context'ni "ochish" (Suspense bilan).useEffectEvent(19.2) β effect ichidagi "reaktiv bo'lmagan" mantiqni ajratish (dependency muammosini hal qiladi).- Activity API (19.2) β ko'rinmas qismlarni "to'xtatib qo'yish" (state'ni saqlab, renderni pauza qilish).
- Partial Pre-rendering β statik qismni CDN'dan, dinamikni keyin.
12.5. Scaling muammolari va yechimlari¶
| Muammo | Yechim |
|---|---|
| Katta bundle | Route splitting, tree shaking, dynamic import |
| Sekin ro'yxatlar | Virtualizatsiya (react-virtual) |
| Re-render shovqini | React Compiler, profiling, state'ni pastga |
| Prop drilling | Context (DI), Zustand |
| Server-client state chalkashligi | TanStack Query + Zustand ajratish |
| Izchilliksiz UI | Dizayn tizimi |
| Sekin birinchi yuklanish | SSR/RSC, streaming, code splitting |
| Murakkab forma logikasi | React Hook Form + Zod |
12.6. Monorepo va katta jamoa¶
- Turbopack / Turborepo / Nx β bir nechta ilova/paket bitta repo'da (web + admin + mobil shared kod).
- Storybook β komponentlarni izolyatsiyada ishlab chiqish va hujjatlash.
- CI/CD β har PR'da test + lint + type-check + build.
- Conventional commits + changesets β versiyalash.
12.7. Expert'ning fikrlash tarzi¶
- YAGNI β kelajakda kerak bo'lishi mumkin degan narsani qo'shmang.
- Premature abstraction'dan qoching β 3 marta takrorlangach abstraksiya qiling (rule of three).
- Performance β o'lchovga asoslangan β taxmin emas, profiling.
- Accessibility β ixtiyoriy emas β semantik HTML, ARIA, klaviatura.
- Server-first fikrlash β brauzerga iloji boricha kam ish va JS yuboring.
- Tip xavfsizligi uchtadan β TypeScript + Zod (runtime) + test.
- Trade-off'larni ayting β har qaror narxga ega; uni ochiq bayon qiling.
12.8. Keng tarqalgan xatolar (expert darajada)¶
| Xato | To'g'risi |
|---|---|
| Boshidanoq murakkab arxitektura | Sodda boshlang, o'sgani sayin bo'ling |
| Hamma narsani abstraksiya qilish | Rule of three |
| Texnologiya tanlovini "hype" bilan | Loyiha ehtiyojiga ko'ra |
| Accessibility'ni keyinga qoldirish | Boshidan rejalashtiring |
| Test'ni "vaqt yo'q" deb tashlab qo'yish | Sifat = tezlik (uzoq muddatda) |
+20 Masala β Daraja 12¶
Oson (struktura):
1. Mavjud loyihani feature-based strukturaga qayta tashkil eting.
2. shared/ui papkasiga 5 ta qayta ishlatiladigan komponent ajrating.
3. API mijozini (axios wrapper) markazlashtiring.
4. Container va Presentational komponentlarni ajrating.
5. Bitta katta komponentni (200+ qator) kichiklarga bo'ling.
6. Dizayn tokenlarni (rang, masofa) markazlashtiring.
7. Colocation prinsipini qo'llang (komponent + test + style yonma-yon).
8. shadcn/ui'ni loyihaga o'rnating va Button'ni sozlang.
O'rta:
9. Feature-Sliced Design qoidalarini loyihada qo'llang (qatlam bog'liqliklari).
10. Storybook o'rnating va 5 komponentni hujjatlang.
11. use hook + Suspense bilan ma'lumot oling.
12. React Compiler'ni yoqib, eski memo'larni tozalang.
13. Murakkab formani RHF + Zod bilan refactor qiling.
14. CI pipeline yozing (lint + type-check + test + build).
15. Bundle analyzer bilan eng katta paketlarni toping va kamaytiring.
Qiyin: 16. EduCore'ning to'liq frontend arxitekturasini loyihalang (FSD, multi-tenant, dizayn tizimi). 17. Monorepo quring: web + admin + shared paket (Turborepo). 18. To'liq dizayn tizimi yarating (tokenlar, komponentlar, Storybook, hujjat). 19. SSR + streaming + RSC bilan optimal yuklanadigan dashboard quring. 20. Capstone: o'z stack'ingizda (Laravel API + Next.js) to'liq production ilova: auth, CRUD, RBAC, payments, test, deploy, monitoring.
β Qiyin masalalar yechimi (16β20) β yo'nalish va qarorlar
Bu daraja mashqlari β kod parchasi emas, arxitektura qarorlari. Yechim β to'g'ri tuzilma va prinsiplar:
16 β Feature-Sliced Design (FSD) tuzilma:
src/
βββ app/ # provayderlar, router, global stillar
βββ pages/ # sahifalar (route'lar yig'iladi)
βββ widgets/ # mustaqil UI bloklar (Header, Sidebar)
βββ features/ # foydalanuvchi amallari (auth, add-student)
βββ entities/ # biznes obyektlar (student, payment, tenant)
βββ shared/ # ui-kit, api, lib, config (hammaga umumiy)
features β entities β shared). Multi-tenant: shared/apida tenant baseURL/header markazlashtiriladi.
17 β Monorepo (Turborepo):
apps/ web/ (mijoz), admin/ (boshqaruv)
packages/ ui/ (umumiy komponentlar), config/ (eslint/ts), types/ (umumiy tiplar)
turbo.json da build/lint pipeline; umumiy kod packages/da, ikki ilova ham ishlatadi.
18 β Dizayn tizimi: tokenlar (rang/spacing/typography CSS o'zgaruvchilar) β primitiv komponentlar (Button, Input) β Storybookda har birini hujjatlash + vizual test.
19 β SSR + streaming + RSC: Server Components'da ma'lumot oling, sekin qismlarni <Suspense>ga o'rab stream qiling (sahifa qism-qism keladi) β foydalanuvchi tez kontentni darrov ko'radi.
20 β Capstone checklist (production ilova): - β Auth (token/session) + RBAC (rol-asosli ruxsat, route + UI darajasida) - β CRUD (TanStack Query + optimistik yangilash) - β Validatsiya (Zod β client + server) - β Test (unit + integration + 1-2 E2E kritik yo'l uchun) - β Xato kuzatuvi (error boundary + Sentry kabi monitoring) - β CI/CD (lint + test + build β deploy) - β Performance (lazy, code splitting, profiling)
Expert sirri: kod yozish emas β to'g'ri qaror qabul qilish muhim. "Bu yerda Context yetadimi yoki Zustand kerakmi?", "Bu komponentni bo'lish kerakmi?" β tajriba shu savollarga tez javob berishdir.
Xulosa va keyingi qadamlar¶
Agar siz bu yo'lni oxirigacha bosib o'tib, har darajaning 20 masalasini yechgan bo'lsangiz β endi siz junior emas, mustaqil React dasturchisisiz. Eslab qoling:
- Hujjatlar β eng yaxshi do'st: react.dev β rasmiy, eng sifatli manba. Yangi React 19 patternlari shu yerda.
- O'qish β bilish. Faqat loyiha qurib o'rganasiz. Har darajadan keyin o'z loyihangizni qiling.
- Ekotizim tez o'zgaradi, asoslar β yo'q. Komponent, state, ma'lumot oqimi tushunchalari abadiy. Kutubxonalar almashadi.
- 2026 mentaliteti: server-first, kam global state,
useEffectβ oxirgi chora, tip xavfsizligi standart.
Tavsiya etilgan o'rganish tartibi (takror)¶
JavaScript (ES6+) β React asoslari β Hooks β Formalar/API
β Routing β State management (Query + Zustand)
β Performance β Patterns β TypeScript β Testing
β Next.js/RSC β Arxitektura
Foydali resurslar¶
- Rasmiy: react.dev, nextjs.org, tanstack.com/query
- Kutubxonalar: React Router, Zustand, React Hook Form, Zod, shadcn/ui, Radix UI
- Testing: Vitest, React Testing Library, Playwright, MSW
- Amaliyot: har darajada o'z mini-loyihangiz; oxirida bitta to'liq portfolio ilovasi
Loyiha g'oyalari (portfolio uchun)¶
- To'liq Todo/Notes ilovasi (CRUD + localStorage + filter)
- Ob-havo ilovasi (API + qidiruv + favorites)
- E-commerce mini-do'kon (savatcha + Zustand + checkout)
- Blog platformasi (Next.js + RSC + Server Actions)
- Dashboard (jadval + grafik + filter + virtualizatsiya)
- EduCore moduli (sizning real loyihangiz β eng yaxshi mashq!)
Muallifga eslatma (juniorlarga o'rgatish uchun): Bu qo'llanmani kurs sifatida ishlatsangiz, har darajani 1-2 hafta deb rejalashtiring (0-7 darajalar β asosiy kurs, 8-12 β ilg'or modul). Masalalarni uy vazifasi qiling, har darajada bitta kichik loyiha topshiring. Live coding'da "Keng tarqalgan xatolar" jadvallarini ko'rsatish juda samarali β talabalar aynan shu xatolarni qiladi.
Omad! React β o'rganishga arziydigan, kuchli vosita. π