2-bosqich

Frontend

Foydalanuvchi ko'radigan va muloqot qiladigan qism - zamonaviy web interfeyslarni yaratish san'ati.

18 daqiqa o'qish O'rta daraja

Frontend nima?

Frontend - bu foydalanuvchi bevosita ko'radigan va muloqot qiladigan qism. Brauzerda ochilgan veb-sahifa, mobil ilovaning ekrani, hatto bankomatning interfeysi - bularning barchasi frontend hisoblanadi.

Frontend development quyidagi asosiy texnologiyalarni o'z ichiga oladi:

  • HTML - sahifaning strukturasi (skelet)
  • CSS - dizayn va stillar (tashqi ko'rinish)
  • JavaScript - interaktivlik va dinamik xatti-harakatlar

Zamonaviy frontend esa bundan ham kengroq:

  • React, Vue, Angular kabi frameworklar
  • Build tools va bundlerlar (Vite, Webpack)
  • State management (Redux, Pinia)
  • Testing va optimization
Bilasizmi?

Frontend va Backend o'rtasidagi farq: Frontend foydalanuvchi brauzerida ishlaydi, Backend esa serverda. Frontend - "uy fasadi", Backend - "uy ichidagi kommunikatsiyalar".

Nega kerak?

Yaxshi frontend - bu biznesning yuzasi. Foydalanuvchilar birinchi bo'lib frontendni ko'rishadi va shu asosida qaror qilishadi:

Birinchi taassurot

Foydalanuvchilar 0.05 soniyada sahifa haqida fikr qiladi. Yomon dizayn = ishonchsizlik.

Conversion rate

Amazon ma'lumotlariga ko'ra, 100ms kechikish sotuvlarni 1% ga kamaytiradi.

Accessibility

Dunyo aholisining 15%i nogironlikka ega. Accessible bo'lmagan sayt ularni yo'qotadi.

Mobile-first

Internet trafikining 60%+ dan ko'pi mobil qurilmalardan. Responsive bo'lishi shart.

Statistika

Google tadqiqotiga ko'ra, sahifa yuklanishi 3 soniyadan oshsa, foydalanuvchilarning 53%i saytni tark etadi. Performance = pul.

Asosiy tushunchalar

SPA vs MPA vs SSR

Veb-ilovalar uchta asosiy arxitekturada qurilishi mumkin:

Turi Tavsifi Afzalligi Kamchiligi
SPA Single Page Application - bitta HTML, JavaScript orqali kontentni almashtiradi Tez navigatsiya, yaxshi UX SEO qiyin, initial load sekin
MPA Multi Page Application - har bir sahifa alohida HTML fayl Yaxshi SEO, oddiy Har safar to'liq reload, sekin
SSR Server Side Rendering - serverda HTML yaratiladi Yaxshi SEO + tez FCP Server yuklamasi, murakkab

Component-Based Architecture

Zamonaviy frontend komponentlarga asoslangan. Har bir UI qismi (tugma, modal, card) alohida komponent sifatida yoziladi:

  • Reusability - bir marta yozib, ko'p joyda ishlatish
  • Maintainability - bir joyni o'zgartirish barchasiga ta'sir qiladi
  • Testing - har bir komponentni alohida test qilish

Design System

Katta loyihalarda barcha UI elementlari bitta tizimga bo'ysunadi:

  • Ranglar palitrasi (colors)
  • Tipografiya (fonts, sizes)
  • Spacing va grid
  • Komponentlar kutubxonasi
  • Ikonlar to'plami

Performance Optimization

Tez sahifa - yaxshi UX va SEO. Asosiy optimizatsiya usullari:

  • Code splitting - faqat kerakli kodni yuklash
  • Lazy loading - rasmlar va komponentlarni kerak bo'lganda yuklash
  • Minification - CSS/JS fayllarni kichiklashtirish
  • Caching - brauzer keshidan foydalanish
  • CDN - statik fayllarni tez tarqatish

Amaliy jarayon (step-by-step)

1

Loyiha sozlash

Vite, Create React App yoki Next.js bilan yangi loyiha yarating. Linter, formatter sozlang.

2

Design system yaratish

Ranglar, shriftlar, spacing ni aniqlang. Tailwind CSS yoki styled-components tanlang.

3

Komponentlar yaratish

Button, Input, Card kabi asosiy komponentlardan boshlang. Atomic design metodologiyasiga amal qiling.

4

Routing sozlash

React Router, Vue Router yoki Next.js routing orqali sahifalar navigatsiyasini yarating.

5

API integratsiya

Backend bilan bog'lanish: fetch, axios yoki React Query orqali ma'lumotlarni olish.

6

Testing

Unit testlar (Jest), integration testlar (Testing Library), E2E testlar (Playwright) yozing.

7

Optimization va deploy

Lighthouse orqali tekshiring, optimizatsiya qiling, Vercel/Netlify ga deploy qiling.

Eng ko'p uchraydigan xatolar

1. Accessibility e'tiborsiz qoldiriladi

Ko'p dasturchilar alt attributlarini, semantic HTML ni, keyboard navigatsiyani unutadi. Bu foydalanuvchilarning katta qismini yo'qotishga olib keladi.

2. Over-engineering

Oddiy landing page uchun Redux, GraphQL, Microservices kerak emas. Loyiha hajmiga mos texnologiya tanlang.

3. Mobile-ni oxirgi o'ringa qo'yish

"Keyin mobile qilamiz" yondashuvi xato. Mobile-first yondashuv bilan boshlang.

4. Bundler konfiguratsiyasini tushunmaslik

Vite/Webpack qanday ishlashini tushunmasdan ishlatish muammolarga olib keladi. Asoslarini o'rganing.

Maslahat

Har bir loyihada Lighthouse audit o'tkazing. Performance, Accessibility, Best Practices, SEO ballari 90+ bo'lishiga harakat qiling.

Best practices

  • Semantic HTML ishlatish: div o'rniga section, article, nav, header
  • Har bir img tagida alt attribute bo'lsin
  • CSS-in-JS yoki Tailwind bilan scoped styles yarating
  • Komponentlarni kichik va reusable qiling (Single Responsibility)
  • Environment variablelarni .env faylda saqlang
  • Error boundaries bilan xatolarni tutib oling
  • React.memo, useMemo, useCallback bilan keraksiz re-renderlarni oldini oling
  • TypeScript ishlatish - runtime xatolarini compile vaqtida toping

Asboblar va texnologiyalar

React Vue.js Angular Vite Webpack Tailwind CSS Sass/SCSS Jest Playwright Storybook Redux TypeScript

React + Next.js

Eng mashhur frontend stack. SSR, SSG, API routes - hammasi bir joyda.

Vite

Lightning fast dev server. Webpack ga zamonaviy alternativa.

Tailwind CSS

Utility-first CSS framework. Tez prototyping va consistent dizayn.

Mini misol

React komponent misoli (TypeScript bilan):

tsx - Button.tsx
import { ButtonHTMLAttributes } from 'react';

interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
  variant?: 'primary' | 'secondary' | 'danger';
  size?: 'sm' | 'md' | 'lg';
  isLoading?: boolean;
}

export function Button({
  children,
  variant = 'primary',
  size = 'md',
  isLoading,
  disabled,
  className,
  ...props
}: ButtonProps) {
  const baseStyles = 'rounded-lg font-medium transition-colors';
  
  const variants = {
    primary: 'bg-teal-500 text-white hover:bg-teal-600',
    secondary: 'bg-gray-200 text-gray-800 hover:bg-gray-300',
    danger: 'bg-red-500 text-white hover:bg-red-600',
  };
  
  const sizes = {
    sm: 'px-3 py-1.5 text-sm',
    md: 'px-4 py-2 text-base',
    lg: 'px-6 py-3 text-lg',
  };

  return (
    <button
      className={`${baseStyles} ${variants[variant]} ${sizes[size]} ${className}`}
      disabled={disabled || isLoading}
      {...props}
    >
      {isLoading ? 'Loading...' : children}
    </button>
  );
}

Tailwind CSS bilan responsive grid:

html
<!-- Responsive grid: 1 col mobile, 2 cols tablet, 3 cols desktop -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
  <div class="bg-white rounded-xl shadow-lg p-6">
    <h3 class="text-xl font-bold text-gray-900">Card 1</h3>
    <p class="text-gray-600 mt-2">Description...</p>
  </div>
  <!-- More cards... -->
</div>

Xavfsizlik va ishonchlilik

  • XSS (Cross-Site Scripting) hujumlariga qarshi: foydalanuvchi kiritgan ma'lumotlarni sanitize qiling.
  • API kalitlarini frontend kodida saqlang! Environment variables va backend orqali foydalaning.
  • HTTPS dan foydalaning. HTTP orqali maxfiy ma'lumotlar uzatilmasin.
  • Content Security Policy (CSP) header'larini o'rnating.
  • npm audit muntazam o'tkazing - dependency'lardagi zaifliklarni toping.

Ko'p so'raladigan savollar (FAQ)

"Eng yaxshi" yo'q - har birining o'z joyi bor. React - eng katta ekotizim va ish bozori. Vue - o'rganish oson, yaxshi dokumentatsiya. Angular - katta korporativ loyihalar uchun, full framework. Loyihangiz talablariga qarab tanlang.

Ikkalasini ham bilish kerak. Avval CSS fundamentallarini (Flexbox, Grid, Cascade) o'rganing. Keyin Tailwind - tez prototyping va consistency uchun juda yaxshi. Katta loyihalarda ikkalasi ham birga ishlatiladi.

2024-yilda ha, deyarli shart. Ko'pchilik kompaniyalar TypeScript talab qiladi. Type safety katta loyihalarda xatolarni 40%+ ga kamaytiradi. JavaScript bilsangiz, TypeScript o'rganish 1-2 hafta oladi.

SPA - admin panellar, dashboardlar, internal toollar uchun (SEO muhim emas). SSR - public saytlar, e-commerce, bloglar uchun (SEO muhim). Next.js/Nuxt.js ikkalasini ham qo'llab-quvvatlaydi.

1) Rasmlarni optimize qiling (WebP, lazy loading). 2) Code splitting qiling. 3) Unused CSS/JS ni olib tashlang. 4) CDN dan foydalaning. 5) Caching strategiyasini o'rnating. Lighthouse dan boshlab, haqiqiy metrikalar (Core Web Vitals) ni kuzating.

Kichik loyihalarda React Context/Vue Provide yetarli. Redux/Zustand/Pinia katta loyihalarda kerak: ko'p komponentlar orasida shared state, murakkab asinxron logika, time-travel debugging zarur bo'lganda.

Testing pyramid: 1) Unit testlar (Jest) - utility funksiyalar, hooks. 2) Integration testlar (React Testing Library) - komponentlar. 3) E2E testlar (Playwright/Cypress) - user flowlar. 70% unit, 20% integration, 10% E2E nisbati optimal.

1) Etik sabab - barcha odamlar saytdan foydalana olishi kerak. 2) Huquqiy - ko'p davlatlarda qonun talab qiladi (ADA, EAA). 3) SEO - accessible saytlar search enginelarda yaxshiroq. 4) UX - keyboard navigation barchaga foydali.

Glossary (Atamalar lug'ati)

SPA Single Page Application - sahifa qayta yuklanmaydi, JavaScript kontent almashtirib turadi.
SSR Server Side Rendering - HTML serverda generatsiya qilinadi, SEO uchun yaxshi.
SSG Static Site Generation - HTML build vaqtida yaratiladi, eng tez variant.
Hydration SSR HTML ni React/Vue interaktiv qilish jarayoni - JavaScript "jonlantiradi".
Bundler Ko'p JavaScript/CSS fayllarni bitta yoki bir nechta faylga birlashtiruvchi tool (Vite, Webpack).
Tree Shaking Ishlatilmagan kodni avtomatik olib tashlash - bundle hajmini kamaytiradi.
Virtual DOM React/Vue ning memory'dagi DOM nusxasi - o'zgarishlarni optimallashtiradi.
Component UI ning mustaqil, qayta ishlatiluvchi qismi - Button, Modal, Card.
Props Parent komponentdan child komponentga uzatiladigan ma'lumotlar.
State Komponentning ichki holatsi - o'zgarganda UI qayta renderlanadi.
Hook React funksiyalari (useState, useEffect) - functional componentlarda state va lifecycle.
Lazy Loading Resurslarni kerak bo'lganda yuklash - dastlabki yuklanishni tezlashtiradi.