EduFlow

الوحدة 1 · النموذج الذهني

بدء مشروع باستخدام Expo

17 دقراءة 4 داملأ الفراغات

الدرس في لمحة

أنشئ مشروع Trailhead باستخدام create-expo-app، وشغّله على هاتفك وعلى محاكٍ، وأضف المكتبات بأمان، واعرف متى يتوقّف Expo Go عن أن يكون كافيًا.

  1. 1أنشئ Trailhead
  2. 2شغّله على جهاز
  3. 3إضافة المكتبات على طريقة Expo
  4. 4Expo Go مقابل الـ development build
  5. 5تغييرات JavaScript مقابل التغييرات الأصلية

لا فيديو هنا، بل الشيء الحقيقي: درس مكتوب وأمثلة قابلة للتشغيل واختبار وتدريب.

توصي وثائق React Native ببدء التطبيقات الجديدة باستخدام إطار عمل (framework)، والإطار الذي تشير إليه هو Expo. يمنحك Expo قالب المشروع، وخادم التطوير، ومكتبة من واجهات الجهاز (الكاميرا، الموقع، التخزين، الإشعارات) تعمل كلها مع إصدار SDK واحد، وخدمة سحابية للبناء والإطلاق. ويبقى بإمكانك كتابة كود أصلي حين تحتاج إليه؛ فأنت لست مقيّدًا.

أنشئ Trailhead

تحتاج إلى Node.js (إصدار LTS نشط) وهاتف أو محاكٍ. ثم:

Terminal
npx create-expo-app@latest trailhead
cd trailhead
npx expo start

يأتي القالب الافتراضي مع TypeScript وExpo Router (نظام التوجيه في Expo) مضبوطَين مسبقًا. هذه هي الأجزاء التي ستلمسها أولًا:

Text
trailhead/
  src/app/_layout.tsx    root layout: wraps every screen (navigation lives here)
  src/app/index.tsx      the first screen, at route "/"
  src/app/explore.tsx    a second example screen, at "/explore"
  assets/                icons, splash image, fonts
  app.json               app name, icons, bundle ids, plugin settings
  package.json           dependencies, including "expo" (the SDK version)

كل ملف داخل src/app يصبح شاشة. ستتعلّم كيف يعمل التوجيه في القسم 3؛ أما الآن فافتح src/app/index.tsx، وغيّر بعض النص، واحفظ.

شغّله على جهاز

يشغّل npx expo start أداة Metro، وهي مُجمِّع (bundler) كود JavaScript، ويطبع رمز QR. أمامك ثلاث طرق للدخول:

  • هاتفك مع Expo Go. ثبّت Expo Go من الـ App Store أو Play Store، ثم امسح رمز QR (بتطبيق الكاميرا على iOS، وبتطبيق Expo Go نفسه على Android). يجب أن يصل الهاتف والحاسوب أحدهما إلى الآخر عبر الشبكة.
  • محاكي iOS (على macOS مع Xcode): اضغط i في الطرفية.
  • محاكي Android (عبر Android Studio): اضغط a.

أثناء عمل Metro، تستحق بضعة مفاتيح أن تحفظها أصابعك: r يعيد تحميل التطبيق، وm يفتح قائمة التطوير داخل التطبيق، وj يفتح React Native DevTools. وحفظ أي ملف يشغّل Fast Refresh، الذي يُدخل الكود الجديد دون أن تفقد الـ components الـ state الخاصة بها.

إضافة المكتبات على طريقة Expo

كل إصدار من Expo SDK يستهدف إصدارًا واحدًا من React Native، والمكتبات الأصلية يجب أن تتوافق معه. لذا، بدلًا من npm install، تضيف المكتبات هكذا:

Terminal
npx expo install expo-location expo-image-picker

يبحث npx expo install عن الإصدار المعروف أنه يعمل مع الـ SDK لديك ويثبّته. أما حزم JavaScript الخالصة (مكتبة للتواريخ مثلًا) فيمرّرها إلى مدير الحزم لديك، لذا يمكنك استخدامه لكل شيء.

وحين تشعر أن شيئًا ليس على ما يرام بعد ترقية، شغّل فحص السلامة:

Terminal
npx expo-doctor

يُبلغك عن الإصدارات غير المتوافقة، والوحدات الأصلية المكرّرة، ومشكلات الإعداد.

Expo Go مقابل الـ development build

Expo Go تطبيق من المتجر فيه مجموعة ثابتة من الوحدات الأصلية المدمجة: الـ Expo SDK وعدد قليل من المكتبات الشائعة. ويُحمَّل كود JavaScript الخاص بك داخله. هذا مثالي للتعلّم، وهو السبب في أنك استطعت تشغيل Trailhead بعد ثوانٍ من إنشائه.

لكن حدوده تظهر بسرعة في المشاريع الحقيقية:

  • لا يستطيع أن يضمّ إلا الكود الأصلي الذي تُرجم داخله. أي مكتبة خارج تلك المجموعة لن تعمل.
  • يدعم إصدار SDK واحدًا في كل مرة (الأحدث عادةً)، فقد لا يفتح فيه مشروع قديم.
  • بعض الميزات تحتاج إلى هوية تطبيقك الخاصة، مثل الإشعارات الفورية (push notifications) ومخطّطات الروابط المخصّصة (custom URL schemes).

الـ development build (نسخة التطوير) هو تطبيقك أنت، باسم تطبيقك وأيقونته ومعرّف الحزمة (bundle identifier) ووحداته الأصلية، إضافةً إلى أدوات التطوير نفسها (Fast Refresh، قائمة التطوير، DevTools). تنشئه محليًا:

Terminal
npx expo run:ios
npx expo run:android

أو في السحابة، دون Xcode أو Android Studio على جهازك، باستخدام EAS Build (القسم 5). بعد ذلك، يقدّم npx expo start كود JavaScript إلى الـ development build تمامًا كما كان يقدّمه إلى Expo Go.

القاعدة المعقولة: تعلّم وابنِ النماذج الأولية في Expo Go، ثم انتقل إلى development build في أول مرة تحتاج فيها إلى شيء لا يملكه Expo Go. في Trailhead ستبقى في Expo Go حتى القسم 4.

تغييرات JavaScript مقابل التغييرات الأصلية

هذا التمييز يمتد على طول الدورة، فلنسمّه الآن. تغييرات JavaScript (الـ components، التنسيقات، المنطق) تصل إلى التطبيق العامل عبر Fast Refresh أثناء التطوير، ولاحقًا عبر التحديثات عبر الهواء (over-the-air) في بيئة الإنتاج. أما التغييرات الأصلية (إضافة وحدة أصلية، أو تغيير نص الأذونات، أو أيقونة التطبيق، أو معرّف الحزمة في app.json) فتحتاج إلى ملف تطبيق جديد. وحين «لا يظهر» تغيير ما، اسأل نفسك: من أي نوع كان؟

في الدرس التالي ستستبدل الشاشة التجريبية في القالب بأول واجهة حقيقية لـ Trailhead، مستخدمًا الـ components الأساسية في React Native.

أهم النقاط

  • npx create-expo-app@latest ينشئ مشروع TypeScript مع Expo Router ومسارات مبنية على الملفات داخل src/app.
  • npx expo start يشغّل خادم التطوير Metro؛ امسح رمز QR بتطبيق Expo Go، أو اضغط i أو a لتشغيل محاكي iOS أو Android.
  • ثبّت المكتبات باستخدام npx expo install، فهو يختار الإصدار المتوافق مع إصدار Expo SDK في مشروعك.
  • Expo Go بيئة تعلّم تجريبية فيها مجموعة ثابتة من الوحدات الأصلية؛ أما الـ development build فهو تطبيقك أنت مع أدوات التطوير، والمشاريع الحقيقية تنتقل إليه مبكرًا.

قراءات إضافية

تحقّق من فهمك

3 أسئلة

السؤال 1 من 3

تحتاج إلى expo-location في Trailhead. أي أمر يجب أن تشغّل؟

السؤال 2 من 3

أضاف Trailhead مكتبة فيها كود أصلي مخصّص ليس ضمن Expo Go. ما الخطوة التالية الصحيحة؟

السؤال 3 من 3

عدّلت نص العنوان في src/app/index.tsx وحفظت الملف. ماذا يحدث على الهاتف الذي يشغّل التطبيق؟

تدريب

املأ الفراغات

أوامر Expo التي ستكتبها كل أسبوع

املأ الفراغات لتُنشئ جلسة الطرفية هذه مشروع Trailhead، وتشغّل خادم التطوير، وتضيف expo-location بأمان، وتشغّل فحص السلامة، ثم تبني development build لمحاكي iOS.

# 1. Create the project npx @latest trailhead cd trailhead # 2. Start the dev server (Metro) npx expo # 3. Add GPS support at the version that matches your SDK npx expo expo-location # 4. Check the project for version mismatches npx # 5. Build and run a development build on the iOS Simulator npx expo