Thuta Learning
How Mobile Apps Work
IntermediateMobile Developmentintermediate

Expo နှင့် React Native

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Expo နှင့် React Native concept ကို နားလည်ရှင်းပြနိုင်ရန်
  • Diagram/checklist ကို ဖတ်ပြီး mobile architecture/decision ဘယ်လို ဆက်စပ်နေသလဲ ခြေရာခံနိုင်ရန်
  • ကိုယ့် mobile app project အတွက် ဘယ်လို အသုံးချသင့်သလဲ ရှင်းပြနိုင်ရန်

နားလည်ထားရမယ့် အချက်

React Native ဟာ JavaScript/TypeScript သုံးပြီး Android နဲ့ iOS ပေါ်မှာ real native UI components တွေကို render လုပ်ပေးတဲ့ core framework ဖြစ်ပါတယ်။

အထင်မှားနေတတ်တဲ့အချက်

"Expo" နဲ့ "React Native" ကို အပြန်အလှန်သုံးလို့ရသလို ထင်တတ်ပေမယ့် Expo app တိုင်းဟာ underneath မှာ React Native app ဖြစ်နေဆဲပါ — Expo ဟာ competing framework မဟုတ်ဘဲ tooling ecosystem တစ်ခုသာ ဖြစ်ပါတယ်။

  • Development tooling — fast dev server, hot reloading, Expo Go preview app
  • Device API access — camera, location, notifications packages ready-made
  • Build services — EAS Build က local Android Studio/Xcode မလိုဘဲ compile ပေးသည်
  • Over-the-air (OTA) updates — app-store review မလိုဘဲ JS-level fix ပို့နိုင်သည်

ဒါတွေဟာ React Native သင်ယူဖို့ လိုအပ်ချက်ကို အစားထိုးမပေးပါဘူး — Expo ဟာ productivity layer တစ်ခုအနေနဲ့သာ အပေါ်ကနေ ထပ်ထားတာဖြစ်ပြီး၊ လိုအပ်ရင် bare workflow ဆီ ရွှေ့နိုင်ပါတယ်။

Expo
React Native အပေါ်တွင် တည်ဆောက်ထားသော tooling/platform ecosystem တစ်ခုဖြစ်ပြီး၊ development tooling, device API access, build services, OTA updates များကို ပိုမိုလွယ်ကူအောင် ကူညီပေးသည်။
text
EXPO BUILT ON REACT NATIVE
--------------------------
EXPO BUILT ON REACT NATIVE
-----
+------------------------------------------------------+
|                   EXPO ECOSYSTEM                      |
|  dev tooling | device APIs | EAS build | OTA updates  |
+------------------------------------------------------+
|             REACT NATIVE (CORE FRAMEWORK)             |
|      JavaScript / TypeScript -> native UI compo-      |
|      nents rendered on the platform                   |
+------------------------------------------------------+
|                 ANDROID   /   IOS  (NATIVE)           |
+------------------------------------------------------+

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

ယနေ့ React Native project အသစ်အများစုဟာ Expo ရဲ့ managed workflow နဲ့ စတင်ကြပါတယ်၊ setup friction တွေကို အများကြီးလျှော့ချပေးလို့ပါ — native project files တွေကို ကိုယ်တိုင်ထိစရာမလိုပါဘူး။

project ရဲ့ app.json (သို့) app.config.js file ထဲမှာ configuration အားလုံးကို တစ်နေရာတည်းမှာ ဖတ်လို့ရအောင် သိမ်းထားပေးပါတယ်။

all-or-nothing မဟုတ်ပါ

Expo ရဲ့ "config plugins" က managed project ထဲမှာ specific native customization တွေကို fully eject မလုပ်ဘဲ ထည့်နိုင်စေပါတယ် — Expo equivalent မရှိတဲ့ native module လိုအပ်မှသာ bare workflow ဘက်ရွှေ့ကြပါတယ်။

forms, lists, camera, notifications, maps စတဲ့ standard app ကို team သေးသေးလေးနဲ့ တည်ဆောက်နေတယ်ဆိုရင် Expo managed workflow ဟာ real needs အများစုကို လုံလောက်စွာ ဖြေရှင်းပေးနိုင်ပါတယ်။

အတူတူ စမ်းရေးကြည့်မယ်

javascript
function suggestReactNativeWorkflow(project) {
  const { wantsSimplifiedSetup, needsCustomNativeModule, teamIsNewToMobile } = project;
  if (needsCustomNativeModule) {
    return "bare/custom React Native workflow (or Expo with a custom dev client)";
  }
  if (wantsSimplifiedSetup || teamIsNewToMobile) {
    return "Expo managed workflow";
  }
  return "Expo managed workflow (default recommendation)";
}

const firstTimeTeam = {
  wantsSimplifiedSetup: true,
  needsCustomNativeModule: false,
  teamIsNewToMobile: true
};

const customHardwareProject = {
  wantsSimplifiedSetup: false,
  needsCustomNativeModule: true,
  teamIsNewToMobile: false
};

const experiencedStandardProject = {
  wantsSimplifiedSetup: false,
  needsCustomNativeModule: false,
  teamIsNewToMobile: false
};

console.log("First-time mobile team:", suggestReactNativeWorkflow(firstTimeTeam));
console.log("Custom hardware project:", suggestReactNativeWorkflow(customHardwareProject));
console.log("Experienced team, standard app:", suggestReactNativeWorkflow(experiencedStandardProject));
You should see
First-time mobile team: Expo managed workflow
Custom hardware project: bare/custom React Native workflow (or Expo with a custom dev client)
Experienced team, standard app: Expo managed workflow (default recommendation)

simplified setup လိုချင်တဲ့ (သို့) mobile အတွက်အသစ်ဖြစ်တဲ့ team ကို Expo managed ဘက် ညွှန်းပြီး၊ custom native module လိုအပ်တဲ့ project ကိုတော့ bare workflow ဘက် ညွှန်းပေးပါတယ်။

၅ မိနစ် စမ်းကြည့်

project အသစ်တစ်ခုအနေနဲ့ `needsCustomNativeModule: true` နဲ့ `teamIsNewToMobile: true` ကို တစ်ပြိုင်နက်တည်း ပါဝင်တဲ့ လေးခုမြောက် example ကို ထည့်ပါ — run မလုပ်ခင် ဘယ်ဟာအရင်စစ်မလဲ ခန့်မှန်းကြည့်ပြီးမှ run ကြည့်ပါ။

သတိလေးတစ်ချက်

Expo နဲ့ React Native ကို အတူတူပဲလို့ ထင်ပြီး React Native course က Expo ကို ကာမိပြီးသားလို့ ယူဆခြင်း

managed workflow ကနေ bare workflow ဆီ ပြောင်းရမယ်ဆိုတာ all-or-nothing decision လို့ ထင်ခြင်း (config plugins ရှိနေကြောင်း မေ့နေခြင်း)

Expo DocumentationHow Mobile Apps Work

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Expo နဲ့ React Native ကို အတူတူပဲလို့ ထင်ပြီး React Native course က Expo ကို ကာမိပြီးသားလို့ ယူဆခြင်း
  • managed workflow ကနေ bare workflow ဆီ ပြောင်းရမယ်ဆိုတာ all-or-nothing decision လို့ ထင်ခြင်း (config plugins ရှိနေကြောင်း မေ့နေခြင်း)
  • ဒီ course က Android Development, Flutter, iOS Development, React Native tutorial တွေကို ထပ်မသင်ပါ — framework hands-on depth အတွက် အဲဒီ course တွေဆီ ဆက်သွားပါ။ ဒီ course က framework-neutral mobile architecture, decision-making, build/deployment/security concept တွေကိုသာ သင်ပေးပါတယ်။

လေ့ကျင့်ခန်း

project အသစ်တစ်ခုအနေနဲ့ `needsCustomNativeModule: true` နဲ့ `teamIsNewToMobile: true` ကို တစ်ပြိုင်နက်တည်း ပါဝင်တဲ့ လေးခုမြောက် example ကို ထည့်ပါ — run မလုပ်ခင် ဘယ်ဟာအရင်စစ်မလဲ ခန့်မှန်းကြည့်ပြီးမှ run ကြည့်ပါ။

You'll know it worked when: First-time mobile team: Expo managed workflow Custom hardware project: bare/custom React Native workflow (or Expo with a custom dev client) Experienced team, standard app: Expo managed workflow (default recommendation) simplified setup လိုချင်တဲ့ (သို့) mobile အတွက်အသစ်ဖြစ်တဲ့ team ကို Expo managed ဘက် ညွှန်းပြီး၊ custom native module လိုအပ်တဲ့ project ကိုတော့ bare workflow ဘက် ညွှန်းပေးပါတယ်။

Expo နှင့် React Native | Thuta Learning