React Native nima? — qanday ishlaydi, Flutter va native dan farqi
Muammodan boshlaylik
Siz React bilan veb-sayt yozasiz. Buyurtmachi deydi: "Endi mobil ilova ham kerak — Android va iPhone uchun".
An'anaviy yo'l:
- Android uchun — Kotlin yoki Java, Android Studio
- iOS uchun — Swift, Xcode, va albatta Mac kompyuter
- Ikki xil til, ikki xil jamoa, ikki xil kod — bitta ilova uchun
React Native — bitta JavaScript/TypeScript kodi bilan ikkala platforma uchun ham haqiqiy mobil ilova yozish. Va siz allaqachon biladigan React bilan.
Qanday ishlaydi
React Native — veb-sahifani ilova ichiga "o'rab qo'yish" emas. Siz yozgan komponentlar haqiqiy native elementlarga aylanadi:
| Siz yozasiz | Android da | iOS da |
|---|---|---|
<View> |
android.view.View |
UIView |
<Text> |
TextView |
UILabel |
<TextInput> |
EditText |
UITextField |
<ScrollView> |
ScrollView |
UIScrollView |
┌─────────────────────┐ ┌──────────────────────┐
│ Sizning kodingiz │ │ Native qatlam │
│ (JavaScript / TS) │ ─────→ │ Android: Kotlin/Java │
│ React komponentlar │ JSI │ iOS: Swift/ObjC │
└─────────────────────┘ └──────────────────────┘
JavaScript mantiqni (holat, hodisalar, API) boshqaradi, ekrandagi elementlarni esa operatsion tizimning o'zi chizadi. Shuning uchun ilova "native" ko'rinadi va ishlaydi: tizim shriftlari, scroll fizikasi, klaviatura.
Zamonaviy React Native yangi arxitektura (JSI, Fabric) da ishlaydi: JavaScript va native qatlam bevosita, tez muloqot qiladi.
React bilan nima umumiy
React Native — bu React. Siz bilgan hamma narsa ishlaydi:
import { useState } from 'react';
import { View, Text, Pressable } from 'react-native';
export default function Hisoblagich() {
const [son, setSon] = useState(0);
return (
<View>
<Text>Bosildi: {son} marta</Text>
<Pressable onPress={() => setSon(son + 1)}>
<Text>Bosing</Text>
</Pressable>
</View>
);
}
- Komponentlar, props,
useState,useEffect, custom hooks — bir xil - JSX — bir xil
- TypeScript — bir xil
- npm paketlari — ko'pchiligi (DOM ga bog'liq bo'lmaganlari)
Farqi — HTML yo'q: div o'rniga View, p o'rniga Text, onClick o'rniga onPress, CSS o'rniga StyleSheet. Buni keyingi darslarda o'rganamiz.
Kim ishlatadi
Meta (Facebook, Instagram ning qismlari), Microsoft (Office, Teams, Xbox), Shopify, Discord, Coinbase, Tesla ilovasi. O'zbekistonda ham ko'plab startaplar va bank ilovalari.
Muqobillar bilan solishtirish
| React Native | Flutter | Native (Kotlin + Swift) | |
|---|---|---|---|
| Til | JavaScript / TypeScript | Dart | Ikki xil til |
| Kod | Bitta, ikki platforma | Bitta, ikki platforma | Ikki alohida |
| UI | Native elementlar | O'z dvigateli bilan chizadi | Native |
| Veb dasturchi uchun | ✅ React bilsa — darhol | Yangi til va freymvork | Yangi til, yangi hammasi |
| Tezlik | Ko'p ilovalar uchun yetarli | Juda yaxshi | Eng yuqori |
| Platformaning eng yangi imkoniyatlari | Biroz kechikadi | Biroz kechikadi | Darhol |
| Ekotizim | npm — ulkan | pub.dev — katta | Rasmiy SDK lar |
Qachon React Native tanlanadi:
- Jamoa React/JavaScript ni biladi
- Veb va mobil ilova o'rtasida kod (mantiq, tiplar, API) bo'lishish kerak
- Tez ishlab chiqish, bitta jamoa
Qachon native yaxshiroq:
- Og'ir grafika, 3D o'yinlar
- Platformaga juda chuqur integratsiya (masalan, maxsus Bluetooth qurilmalar)
Expo
React Native ni ikki yo'l bilan ishlatish mumkin. Bugun rasmiy React Native hujjatlari Expo freymvorkini tavsiya qiladi:
- Android Studio va Xcode siz boshlash — telefondagi Expo Go ilovasida darhol ko'rish
- Tayyor kutubxonalar: kamera, joylashuv, bildirishnomalar, fayllar
- Expo Router — fayllar asosidagi navigatsiya (Next.js kabi)
- EAS — bulutda ilova yasash va do'konlarga yuborish (Mac siz ham iOS uchun!)
Bu kurs to'liq Expo va TypeScript bilan.
Kurs uchun nima kerak
- JavaScript va React asoslari — komponentlar, props,
useState,useEffect(saytdagi React kursi) - TypeScript asoslari — foydali, lekin majburiy emas (saytdagi TS kursi)
- Kompyuter (Windows, macOS yoki Linux) va Android yoki iPhone telefon
Nima uchun shunday?
Nima uchun React Native veb-sahifani shunchaki ilovaga o'ramaydi (Cordova kabi)?
Chunki WebView ichidagi sahifa — doim "begona" bo'lib qoladi: scroll boshqacha, tugmalar sekin javob beradi, klaviatura noqulay, animatsiyalar uzilib-uzilib. Foydalanuvchi buni darhol sezadi. React Native yondashuvi — "bir marta o'rgan, hamma joyda yoz" (learn once, write anywhere): React mantig'i umumiy, lekin ekranda — har bir platformaning o'z native elementlari. Natija — native ilovadan deyarli farq qilmaydigan tajriba.
Xulosa
Eslab qoling:
- React Native — bitta TS/JS kod bilan Android va iOS uchun haqiqiy native ilova
- Komponentlar native elementlarga aylanadi:
View→UIView/android.view.View - React bilimlari to'liq ishlaydi; HTML va CSS o'rniga —
View,Text,StyleSheet - Flutter — Dart tilida; native — ikki xil til va kod
- Expo — rasmiy tavsiya etilgan yo'l; bu kurs Expo + TypeScript bilan
Keyingi dars
2-dars: Expo bilan o'rnatish — Node.js, create-expo-app, Expo Go