|
|
(19 مراجعة متوسطة بواسطة 4 مستخدمين غير معروضة) |
سطر 1: |
سطر 1: |
| <noinclude>{{DISPLAYTITLE:مدخل إلى React Native}}</noinclude>
| | {{DISPLAYTITLE:مدخل إلى React Native}} |
| ستساعدك هذه الصفحة على تثبيت React Native وبناء تطبيقك الأول. إن ثبّتت React Native مسبقاً فيمكنك تخطي هذه الصفحة والتوجّه إلى [[ReactNative/tutorial|الدليل التطبيقي]].
| | مرحبًا بك في بداية رحلتنا إلى إطار عمل React Native. إن أردت الاطّلاع على تعليمات إعداد البيئة، فقد انتقلت إلى [[ReactNative/environment setup|قسمها الخاص]]. ستجد في هذه الصفحة مدخلًا إلى التوثيق والمكونات الأصيلة ومكتبة React وغير ذلك. |
|
| |
|
| يمكنك أن تبدأ مباشرة باتباع الإرشادات في قسم "[[ReactNative/getting started#.D8.A7.D8.A8.D8.AF.D8.A3 .D8.A8.D8.B3.D8.B1.D8.B9.D8.A9|ابدأ بسرعة]]"، أو يُمكنك اتباع إرشادات تهيئة بيئة عمل على نظام تشغيلك لبناء المشاريع باستخدام شيفرة أصيلة (native code) حسب المنصة التي تريد تطوير تطبيق لها على قسم "بناء مشاريع بشيفرة أصيلة"، اتبع الإرشادات المذكورة في أحد هذه الأقسام حسب نظام تشغيلك والمنصة التي ترغب بالتطوير لها:
| | كُتِب هذا التوثيق لجميع الأشخاص الذين يريدون تعلّم React Native بغض النظر عن مستوى خبرتهم أو خلفيتهم ابتداءً من من مطوري تطبيقات iOS الخبراء إلى متعلّمي [[React]] المبتدئين، والأشخاص الذين يتعلّمون البرمجة لأول مرة في حياتهم المهنية. |
| * [[ReactNative/getting started#.D8.A7.D9.84.D8.AA.D8.B7.D9.88.D9.8A.D8.B1 .D8.B9.D9.84.D9.89 .D9.86.D8.B8.D8.A7.D9.85 macOS .D9.84.D9.85.D9.86.D8.B5.D9.91.D8.A9 iOS|التطوير على نظام macOS لمنصّة iOS]]
| |
| * [[ReactNative/getting started#.D8.A7.D9.84.D8.AA.D8.B7.D9.88.D9.8A.D8.B1 .D8.B9.D9.84.D9.89 .D9.86.D8.B8.D8.A7.D9.85 macOS .D9.84.D9.85.D9.86.D8.B5.D9.91.D8.A9 Android|التطوير على نظام macOS لمنصّة Android]]
| |
| * [[ReactNative/getting started#.D8.A7.D9.84.D8.AA.D8.B7.D9.88.D9.8A.D8.B1 .D8.B9.D9.84.D9.89 .D9.86.D8.B8.D8.A7.D9.85 Windowns .D9.84.D9.85.D9.86.D8.B5.D9.91.D8.A9 Android|التطوير على نظام Windowns لمنصّة Android]]
| |
| * [[ReactNative/getting started#.D8.A7.D9.84.D8.AA.D8.B7.D9.88.D9.8A.D8.B1 .D8.B9.D9.84.D9.89 .D9.86.D8.B8.D8.A7.D9.85 Linux .D9.84.D9.85.D9.86.D8.B5.D9.91.D8.A9 Android|التطوير على نظام Linux لمنصّة Android]]
| |
|
| |
|
| ==ابدأ بسرعة== | | == كيفية استخدام هذا التوثيق == |
| أسهل طريقة لبناء تطبيق React Native هي عن طريق بيئة [https://expo.io/ Expo]. وهي بيئة تمكّن من بناء مشروعٍ دون الحاجة لتثبيت أو إعداد أدوات للتعامل مع شيفرة أصيلة، إذ لا حاجة لتثبيت Android Studio أو Xcode. (لكنها تأتي مع بعض [[ReactNative/getting started#.D9.85.D8.AD.D8.A7.D8.B0.D9.8A.D8.B1 .D9.8A.D8.AC.D8.A8 .D8.A7.D9.84.D8.A7.D9.86.D8.AA.D8.A8.D8.A7.D9.87 .D8.A5.D9.84.D9.8A.D9.87.D8.A7 .D8.B9.D9.86.D8.AF .D8.A7.D8.B3.D8.AA.D8.AE.D8.AF.D8.A7.D9.85 Expo|المحاذير]]).
| | يمكنك البدء من هذه الصفحة وقراءة هذا التوثيق تسلسليًا كأنك تقرأ كتابًا، أو يمكنك قراءة الأقسام المحدَّدة التي تحتاجها فقط. إن كنت على دراية بمكتبة React، فيمكنك تخطي قسم [[ReactNative/intro react|أساسيات مكتبة React]]، أو قراءته لتجديد معلوماتك. |
|
| |
|
| بافتراض أن حزمة [[Node.js|Node]] مثبتة لديك، بإمكانك استخدام أداة npm لتثبيت واجهة سطر الأوامر لبيئة Expo بالأمر التالي:<syntaxhighlight>
| | == المتطلبات الأساسية == |
| npm install -g expo-cli
| | ستحتاج إلى فهم أساسيات لغة [[JavaScript]] للعمل مع React Native. إن كنت جديدًا على لغة جافا سكريبت أو بحاجة إلى تجديد معلوماتك، فيمكنك الغوص في [[JavaScript|توثيق لغة JavaScript]] على موسوعة حسوب.<blockquote>افترضنا عدم وجود معرفة مسبقة بتطوير تطبيقات React أو Android أو iOS لدى قارئ هذا التوثيق، ولكنها مواضيع قيّمة ليدرسها مطوّر React Native الطموح، لذلك ربطنا القارئ بالموارد والمقالات اللازمة ليتعمّق في هذه المواضيع أكثر.</blockquote> |
| </syntaxhighlight>بعد ذلك نفّذ الأوامر التالية لتنشئ مشروع React Native باسم <code>AwesomeProject</code>:<syntaxhighlight>
| |
| expo init AwesomeProject
| |
|
| |
|
| cd AwesomeProject
| | == أمثلة تفاعلية == |
| npm start
| | يتيح لك هذا المدخل البدء على الفور ضمن متصفحك بأمثلة تفاعلية كهذا المثال ([https://snack.expo.dev/@hsoubwiki/hello-world تجربة حية]):<syntaxhighlight lang="javascript"> |
| </syntaxhighlight>سيقوم هذا الأمر بتشغيل خادم تطويرٍ (development server) على حاسوبك. | | import React from 'react'; |
| | import { Text, View } from 'react-native'; |
|
| |
|
| ==== تشغيل التطبيق ==== | | const YourApp = () => { |
| ثبّت تطبيق Expo الخاص بالعميل على هاتفك ذو [https://play.google.com/store/apps/details?id=host.exp.exponent&referrer=www نظام Android] أو [https://itunes.apple.com/app/apple-store/id982107779 نظام iOS] وصِلهُ بنفس الشبكة اللاسلكية التي يتصل بها حاسوبك. إن كنت على نظام Android فاستخدم هاتفك لمسح رمز الاستجابة السريعة (QR code) لفتح مشروعك، أما على iOS فاتبع الإرشادات التي تظهر على الشاشة لتحصل على رابط تفتح من خلاله مشروعك.
| | return ( |
| | <View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}> |
| | <Text> |
| | Try editing me! 🎉 |
| | </Text> |
| | </View> |
| | ); |
| | } |
|
| |
|
| ==== تعديل التطبيق ====
| | export default YourApp; |
| بعد تشغيل التطبيق بنجاح، لنُعدّله. افتح ملف <code>App.js</code> في محرر النصوص المفضل لديك وعدّل بعض الأسطر. يجب على التطبيق أن يُحدَّثَ تلقائيًّا كلما حفظت تعديلاتك.
| | </syntaxhighlight>يمكنك استخدام الأداة Snack Player التي هي أداة مفيدة أنشأها Expo لتضمين وتشغيل مشاريع React Native ومشاركة كيفية تصييرها render على منصات مختلفة مثل Android و iOS. وضعنا لك قبل كل مثال رابطًا لتجربة حية له على Snack Player يمكِّنك من تجربة المثال على مختلف الأجهزة والبيئات إن أردت ذلك وحتى نسخ الشيفرة إلى حسابك على Expo أو يمكنك الاطلاع على المثال مباشرةً ونسخ الشيفرة من الموسوعة.<blockquote>إن أردت إعداد بيئة تطوير محلية، فيمكنك [[ReactNative/environment setup|اتباع دليلنا لإعداد بيئتك على جهازك المحلي]] ولصق أمثلة الشيفرة في ملف <code>App.js</code> الخاص بك (إذا كنت مطور ويب، فقد يكون لديك بالفعل بيئة محلية معدَّة لاختبار متصفح الهاتف المحمول).</blockquote> |
|
| |
|
| ==== هذا كل ما في الأمر! ==== | | == مكونات الدالة Function Components ومكونات الصنف Class Components == |
| تهانينا! لقد شغلت وعدلت أول تطبيق React Native خاص بك بنجاح.
| | يمكنك إنشاء مكوّنات باستخدام دوال أو أصناف في React. كانت مكونات الصنف سابقًا هي المكونات الوحيدة التي يمكن أن يكون لها حالة، ولكن أصبح بإمكانك إضافة حالة وغير ذلك إلى مكونات الدالة منذ بداية ظهور واجهات API الخاصة بخطّافات React. |
|
| |
|
| === الخطوات التالية ===
| | ظهرت الخطافات Hooks في الإصدار [https://reactnative.dev/blog/2019/03/12/releasing-react-native-059 0.59 من React Native]، وبما أن الخطافات هي الطريقة المستقبلية لكتابة مكونات React الخاصة بك، فقد استخدمنا أمثلة لمكونات الدالة بالإضافة إلى مكونات الصنف كما يلي: |
| لدى بيئة Expo [https://docs.expo.io/ توثيق] خاص بها يمكنك الرجوع إليه في حال راودك تساؤل حولها. كما يمكنك طلب المساعدة على [https://forums.expo.io/ منتديات Expo].
| |
|
| |
|
| إن كنت تواجه مشكلةً مع Expo فابحث أولًا لترى إن كانت هناك علّة (issue) عن المشكلة التي تواجهها قبل أن تفتح علّة جديدة، يمكنك البحث في الصفحتين التاليتين:
| | === مكون الدالة === |
| * [https://github.com/expo/expo-cli/issues علل واجهة سطر أوامر Expo] (للمشاكل المتعلقة بواجهة سطر الأوامر Expo CLI).
| | [https://snack.expo.dev/@hsoubwiki/hello-world-class-component تجربة حية للمثال]:<syntaxhighlight lang="javascript"> |
| | import React from 'react'; |
| | import { Text, View } from 'react-native'; |
|
| |
|
| * [https://github.com/expo/expo/issues علل Expo] (للمشاكل المتعلقة بتطبيق العميل أو حزمة التطوير -SDK- الخاصة ببيئة Expo).
| | const HelloWorldApp = () => { |
| أمّا للاستزادة حول React Native، فابدأ بقراءة [[ReactNative/tutorial|الدليل التطبيقي]].
| | return ( |
| | <View style={{ |
| | flex: 1, |
| | justifyContent: 'center', |
| | alignItems: 'center' |
| | }}> |
| | <Text>Hello, world!</Text> |
| | </View> |
| | ); |
| | } |
|
| |
|
| ==== تشغيل التطبيق على مُحاكٍ (simulator) أو جهاز افتراضي (virtual device) ====
| | export default HelloWorldApp; |
| تسهل واجهة سطر الأوامر الخاصة ببيئة Expo عملية تشغيل التطبيق على جهاز فعلي دون الحاجة لإعداد بيئة تطويرية (development environment). إن كنت تريد تشغيل التطبيق على محاكي نظام iOS أو على جهاز Android افتراضي فانظر إرشادات بناء مشروع يحتوي شيفرة أصيلة للتعرف على كيفية تثبيت Xcode وإعداد البيئة التطويرية لنظام Android.
| |
| | |
| بعد إكمالك لعملية الإعداد، تستطيع تشغيل تطبيقك على جهاز Android الافتراضي عن طريق تنفيذ الأمر:<syntaxhighlight>
| |
| npm run android
| |
| </syntaxhighlight>كما تستطيع تشغيله على محاكي iOS بتنفيذ الأمر التالي (على نظام macOS فقط):<syntaxhighlight>
| |
| npm run ios
| |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| ===محاذير يجب الانتباه إليها عند استخدام Expo=== | | === مكون الصنف === |
| | [https://snack.expo.dev/@hsoubwiki/hello-world-function-component تجربة حية للمثال]:<syntaxhighlight lang="javascript"> |
| | import React, { Component } from 'react'; |
| | import { Text, View } from 'react-native'; |
|
| |
|
| لأنّ مشروعك المبني باستخدام Expo لا يحتوي على شيفرة أصيلة، فلا يمكن تضمين وحدات أصلية مُخصّصة (custom native modules) باستثناء واجهات React Native البرمجية (React Native APIs) والمكونات المتوفّرة في تطبيق عميل Expo (أي التطبيق الذي تثبته على هاتفك).
| | class HelloWorldApp extends Component { |
| | render() { |
| | return ( |
| | <View style={{ |
| | flex: 1, |
| | justifyContent: "center", |
| | alignItems: "center" |
| | }}> |
| | <Text>Hello, world!</Text> |
| | </View> |
| | ); |
| | } |
| | } |
|
| |
|
| إن كنت تعلم مسبقًا أنك ستحتاج لإضافة شيفرةً أصيلة خاصة بك، فلا يزال استخدام Expo خياراً مناسباً لبدء تعلّم React Native. إذ كل ما عليك فعله في هذه الحالة هو تنفيذ عمليّة [https://docs.expo.io/versions/latest/expokit/eject '''الإخراج''' عبر الأمر <code>eject</code>] لبناء شيفرتك الأصيلة. إن نفّذت عملية الإخراج، فمن الضروري اتباع الخطوات المذكورة في قسم "بناء مشاريع بشيفرة أصيلة" أسفله لمواصلة العمل على مشروعك.
| | export default HelloWorldApp; |
| | </syntaxhighlight>يمكنك الاطلاع على مزيد من أمثلة مكونات الصنف في [https://reactnative.dev/versions الإصدارات السابقة من هذا التوثيق باللغة الإنجليزية]. |
|
| |
|
| تقوم واجهة سطر أوامر Expo بإعداد مشروعك بأحدث نسخة من React Native يدعمها تطبيق عميل Expo. عادة ما يدعم تطبيق عميل Expo نسخةً جديدة من React Native بعد حوالي أسبوع من إصدارها كنسخة مستقرة. بإمكانك الإطلاع على هذا [https://docs.expo.io/versions/latest/sdk/#sdk-version المستند] لمعرفة الإصدارات المدعومة.
| | == ملاحظات المطور == |
| | يأتي الأشخاص الذين يريدون تعلّم React Native من خلفيات متنوعة، فقد تكون لديك خبرة في مجموعة من التقنيات، من الويب إلى تطبيقات Android و iOS وغير ذلك، لذلك حاولنا كتابة هذا التوثيق للمطورين من جميع تلك الخلفيات. سنقدّم أحيانًا تفسيرات خاصة بإحدى المنصات أو غيرها كما يلي: |
|
| |
|
| إن كنت تنوي دمج React Native مع مشروع قائم بالفعل، فتخطّ سطر أوامر Expo وابدأ مباشرة بإعداد بيئة التطوير باستخدام أدوات البناء الأصيلة. انظر "بناء مشاريع بشيفرة أصيلة" أسفله.
| | * '''Android''': قد يكون مطورو Android على دراية بهذا المفهوم. |
| | * '''iOS''': قد يكون مطورو iOS على دراية بهذا المفهوم. |
| | * '''الويب''': قد يكون مطورو الويب على دراية بهذا المفهوم. |
|
| |
|
| ==بناء مشاريع بشيفرة أصيلة==
| | حان الوقت للتعرف على أساس إطار عمل React Native وهو [[ReactNative/intro react native components|المكونات الأصيلة Native Components]]، بعد أن عرفت كيفية عمل هذا الدليل. |
| اتّبع هذه الإرشادات إن أردت بناء شيفرة أصيلة في مشروعك. على سبيل المثال، إن كنت تنوي دمج React Native في مشروع قائم بالفعل أو إذا نفّذت أمر "eject" على مشروع أُنشئَ باستخدام Expo أو أداة "Create React Native App" فستحتاج لهذا القسم.
| |
|
| |
|
| تختلف هذه الإرشادات باختلاف نظام التشغيل الذي ستطور عليه وما إذا كنت تنوي أن تبدأ التطوير لنظام iOS أو Android. إن كنت تنوي التطوير لكلا النظامين في نفس الوقت فيُمكنك ذلك، لكن عليك القيام بعملية التثبيت لكل منهما على حدى نظراً لاختلاف إعداداتهما:
| | == مصادر == |
| * [[ReactNative/getting started#.D8.A7.D9.84.D8.AA.D8.B7.D9.88.D9.8A.D8.B1 .D8.B9.D9.84.D9.89 .D9.86.D8.B8.D8.A7.D9.85 macOS .D9.84.D9.85.D9.86.D8.B5.D9.91.D8.A9 iOS|التطوير على نظام macOS لمنصّة iOS]]
| |
| * [[ReactNative/getting started#.D8.A7.D9.84.D8.AA.D8.B7.D9.88.D9.8A.D8.B1 .D8.B9.D9.84.D9.89 .D9.86.D8.B8.D8.A7.D9.85 macOS .D9.84.D9.85.D9.86.D8.B5.D9.91.D8.A9 Android|التطوير على نظام macOS لمنصّة Android]]
| |
| * [[ReactNative/getting started#.D8.A7.D9.84.D8.AA.D8.B7.D9.88.D9.8A.D8.B1 .D8.B9.D9.84.D9.89 .D9.86.D8.B8.D8.A7.D9.85 Windowns .D9.84.D9.85.D9.86.D8.B5.D9.91.D8.A9 Android|التطوير على نظام Windowns لمنصّة Android]]
| |
| * [[ReactNative/getting started#.D8.A7.D9.84.D8.AA.D8.B7.D9.88.D9.8A.D8.B1 .D8.B9.D9.84.D9.89 .D9.86.D8.B8.D8.A7.D9.85 Linux .D9.84.D9.85.D9.86.D8.B5.D9.91.D8.A9 Android|التطوير على نظام Linux لمنصّة Android]]
| |
| | |
| ===التطوير على نظام macOS لمنصّة iOS=== | |
| ====تثبيت المتطلبات====
| |
| | |
| ستحتاج إلى Node، وWatchman، وواجهة سطر أوامر React Native، إضافةً إلى Xcode.
| |
| | |
| رغم أنّك تستطيع استخدام أي محرر نصوص من اختيارك، سيتعين عليك تثبيت Xcode لإعداد الأدوات الضرورية لبناء تطبيق React Native لنظام iOS.
| |
| | |
| =====Node وWatchman =====
| |
| | |
| ننصح باستخدام [http://brew.sh/ Homebrew] لتثبيت Node و Watchman. نفِّذ الأوامر التالية في طرفيّةٍ (Terminal) بعد تثبيت Homebrew:<syntaxhighlight>
| |
| brew install node
| |
| | |
| brew install watchman
| |
| </syntaxhighlight>
| |
| | |
| إن سبَق وأن ثبّتت Node على نظامك، فتأكد أن النسخة هي 8.3 أو أحدث.
| |
| | |
| [https://facebook.github.io/watchman Watchman] أداةٌ من تطوير Facebook لمراقبة التغييرات التي تحدث في نظام الملفات (filesystem). ننصح بتثبيتها لأداءٍ أفضل.
| |
| | |
| =====واجهة React Native لسطر الأوامر (CLI)=====
| |
| | |
| تأتي حزمة Node مع أداة npm التي يُمكن استخدامها لتثبيت واجهة سطر أوامر React Native. نفّذ الأمر التالي في الطرفية لتثبيتها:<syntaxhighlight>
| |
| npm install -g react-native-cli
| |
| </syntaxhighlight>إن واجهت مشكلة مع الصلاحيات (Permissions)، فقد تحتاج إلى إضافة <code>sudo</code> قبل الأمر:<syntaxhighlight>
| |
| sudo npm install -g react-native-cli
| |
| </syntaxhighlight>إن واجهت خطأً كالتالي:<syntaxhighlight>
| |
| Cannot find module 'npmlog'
| |
| </syntaxhighlight>
| |
| | |
| فحاول تثبيت npm مباشرةً بتنفيذ الأمر التالي:<syntaxhighlight>
| |
| curl -0 -L https://npmjs.org/install.sh | sudo sh
| |
| </syntaxhighlight>
| |
| | |
| =====Xcode=====
| |
| | |
| أسهل طريقة لتثبيت Xcode هي عن طريق [https://itunes.apple.com/us/app/xcode/id497799835?mt=12 متجر تطبيقات Mac]. بتثبيت Xcode ستحصل كذلك على محاكي iOS وكل الأدوات الضرورية لبناء تطبيق iOS خاصّ بك.
| |
| | |
| إن ثبّتت Xcode مسبقاً، فتأكد أن النسخة هي 9.4 أو أحدث.
| |
| | |
| =====أدوات سطر الأوامر Command Line Tools =====
| |
| | |
| ستحتاج لتثبيت أدوات سطر الأوامر الخاصة ببيئة Xcode كذلك. شغِّل Xcode ثم اختر "Preferences" من قائمة Xcode. اذهب إلى تبويبة "Locations" ثم ثبت الأدوات باختيار أحدث نسخة من القائمة المنسدلة "Command Line Tools".
| |
| [[ملف:GettingStartedXcodeCommandLineTools.png|مركز|604x604بك]]
| |
| ====إنشاء تطبيق جديد====
| |
| | |
| استخدم واجهة سطر الأوامر لإنشاء مشروع React Native جديد باسم "AwesomeProject":<syntaxhighlight>
| |
| react-native init AwesomeProject
| |
| </syntaxhighlight>هذه الخطوة غير ضرورية في حال كنت تريد دمج React Native مع مشروع قائم بالفعل أو إن نفّذت الأمر "eject" على مشروع Expo أو إن كان هدفك هو دعم نظام iOS لمشروع React Native قائم بالفعل. (انظر صفحة [[ReactNative/platform specific code|كتابة شيفرةٍ حسب المنصة]]).
| |
| | |
| ====تشغيل تطبيقك====
| |
| | |
| نفذ الأمرين التاليين للانتقال إلى مجلد مشروع React Native الخاص بك وتشغيل التطبيق:<syntaxhighlight>
| |
| cd AwesomeProject
| |
| | |
| react-native run-ios
| |
| </syntaxhighlight>خلال لحظات سترى تطبيقك يعمل على محاكي نظام iOS. تنفيذ الأمر السابقِ طريقةٌ واحدةٌ فقط من الطرائق التي يُمكن بها تشغيل التطبيق. بإمكانك كذلك تشغيله من Xcode أو [https://nuclide.io/ Nuclide].
| |
| [[ملف:GettingStartediOSSuccess.png|مركز]]
| |
| | |
| ملاحظة: إن واجهت مشكلة في تشغيل التطبيق فراجع [[ReactNative/troubleshooting|صفحة تصويب الأخطاء]].
| |
| | |
| =====تشغيل التطبيق على جهاز فعلي=====
| |
| | |
| سيشغل الأمر أعلاه التطبيق في محاكي iOS افتراضيًّا، إن أردت تشغيل التطبيق على جهاز iOS فعلي،فاتبع [[ReactNative/running on device|الإرشادات الموصوفة هنا.]]
| |
| | |
| =====تعديل التطبيق=====
| |
| | |
| بعد تشغيل التطبيق بنجاح، لنعدله.
| |
| | |
| * افتح ملف <code>App.js</code> في محرر النصوص المفضل لديك وعدّل بعض الأسطر.
| |
| * اضغط على <code>⌘R</code> داخل محاكي iOS لإعادة تحميل التطبيق ولترى تعديلاتك.
| |
| | |
| =====هذا كل ما في الأمر!=====
| |
| | |
| تهانينا! لقد شغلت وعدلت تطبيقك الأول بنجاح.
| |
| | |
| ====ماذا بعد؟====
| |
| | |
| * شغّل ميزة [[ReactNative/debugging|إعادة التحميل التلقائي]] (Live Reload) من قائمة المطور (Developer Menu). سيُعيد تطبيقك التحميل كلما حفظت تعديلاتك.
| |
| * إن أردت إضافة شيفرة React Native هذه لمشروع قائم بالفعل، راجع [[ReactNative/debugging|دليل الدّمج]].
| |
| | |
| لتعلّم المزيد حول React Native، ابدأ بقراءة [[ReactNative/tutorial|الدليل التطبيقي]].
| |
| | |
| ===التطوير على نظام macOS لمنصّة Android===
| |
| ====تثبيت المتطلبات====
| |
| | |
| ستحتاج إلى Node، وWatchman، وواجهة سطر أوامر React Native، وبيئة JDK (اختصار Java Development Kit) إضافةً إلى Android Studio.
| |
| | |
| رغم أنّك تستطيع استخدام أي محرر نصوص من اختيارك، سيتعين عليك تثبيت Android Studio لإعداد الأدوات الضرورية لبناء تطبيق React Native لنظام Android.
| |
| | |
| =====Node وWatchman =====
| |
| | |
| ننصح باستخدام [http://brew.sh/ Homebrew] لتثبيت Node و Watchman. نفِّذ الأوامر التالية في طرفيّةٍ (Terminal) بعد تثبيت Homebrew:<syntaxhighlight>
| |
| brew install node
| |
| | |
| brew install watchman
| |
| </syntaxhighlight>
| |
| | |
| إن سبَق وأن ثبّتت Node على نظامك، فتأكد أن النسخة هي 8.3 أو أحدث.
| |
| | |
| [https://facebook.github.io/watchman Watchman] أداةٌ من تطوير Facebook لمراقبة التغييرات التي تحدث في نظام الملفات (filesystem). ننصح بتثبيتها لأداءٍ أفضل.
| |
| | |
| =====واجهة React Native لسطر الأوامر (CLI)=====
| |
| | |
| تأتي حزمة Node مع أداة npm التي يُمكن استخدامها لتثبيت واجهة سطر أوامر React Native. نفّذ الأمر التالي في الطرفية لتثبيتها:<syntaxhighlight>
| |
| npm install -g react-native-cli
| |
| </syntaxhighlight>إن واجهت مشكلة مع الصلاحيات (Permissions)، فقد تحتاج إلى إضافة <code>sudo</code> قبل الأمر:<syntaxhighlight>
| |
| sudo npm install -g react-native-cli
| |
| </syntaxhighlight>إن واجهت خطأً كالتالي:<syntaxhighlight>
| |
| Cannot find module 'npmlog'
| |
| </syntaxhighlight>
| |
| | |
| فحاول تثبيت npm مباشرةً بتنفيذ الأمر التالي:<syntaxhighlight>
| |
| curl -0 -L https://npmjs.org/install.sh | sudo sh
| |
| </syntaxhighlight>
| |
| | |
| =====حزمة تطوير جافا (Java Development Kit)=====
| |
| يتطلب React Native إصدارًا حديثًا من بيئة حزمة تطوير جافا Java SE Development Kit المعروفة بالاختصار (JDK). [http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html نزِّل وثبّت Oracle JDK 8] إذا لزم الأمر. يمكنك أيضًا استخدام [http://openjdk.java.net/install/ OpenJDK 8] كبديل.
| |
| =====بيئة تطوير Android=====
| |
| قد يكون إعداد بيئة التطوير شاقًّا إلى حد ما إذا كنت جديدًا على تطوير تطبيقات Android. أمّا إذا كنت معتادًا على تطوير تطبيقات Android بالفعل، فهناك بعض الأشياء التي قد تحتاج إلى تهيئتها. في كلتا الحالتين، تأكّد من اتباع الخطوات التالية بعناية.
| |
| =====1. تثبيت Android Studio=====
| |
| [https://developer.android.com/studio/index.html نزِّل وثبّت Android Studio.] اختر إعدادًا مخصّصًا (Custom setup) عندما يُطلب منك تحديد نوع التثبيت. تأكد من تحديد جميع المربعات المجاورة لكل ما يلي:
| |
| | |
| * <code>Android SDK</code>
| |
| * <code>Android SDK Platform</code>
| |
| * <code>Performance (Intel ® HAXM)</code>
| |
| * <code>Android Virtual Device</code>
| |
| | |
| ثم انقر على "Next" لتثبيت كافّة هذه المكونات.
| |
| | |
| '''ملاحظة:''' إذا كانت مربعات الاختيار غير نشطة (أي لا يمكنك التعليم عليها)، فيُمكنك تثبيت هذه المكونات لاحقًا.
| |
| | |
| =====2. تثبيت Android SDK=====
| |
| | |
| يُثبّت Android Studio أحدث إصدار من Android SDK افتراضيًّا. لكنّ إنشاء تطبيق React Native بشيفرة أصيلة يتطلب حزمة <code>Android 8.1 (Oreo)</code> على وجه الخصوص. يمكن تثبيت حزم Android SDK إضافية عبر مدير SDK (أو SDK Manager) في Android Studio.
| |
| | |
| يمكن الوصول إلى مدير SDK من شاشة "Welcome to Android Studio". انقر على "Configure" ، ثم حدد "SDK Manager".
| |
| | |
| [[ملف:GettingStartedAndroidStudioWelcomeMacOS.png|مركز|لاإطار]]
| |
| | |
| '''ملاحظة:''' يمكن الوصول إلى مدير SDK كذلك في مربع الحوار "Preferences" في Android Studio ، من خلال Appearance & Behavior ثمّ System Settings ثمّ Android SDK.
| |
| | |
| اختر علامة التبويب "SDK Platforms" من داخل مدير SDK، ثم علّم على المربع بجوار "Show Package Details" في الركن السفلي الأيمن. ابحث عن خانة <code>Android 8.1 (Oreo)</code> ووسّعها، ثم تأكد من التعليم على العناصر التالية:
| |
| | |
| * <code>Android SDK Platform 27</code>
| |
| * <code>Intel x86 Atom_64 System Image</code> أو <code>Google APIs Intel x86 Atom System Image</code>
| |
| | |
| بعد ذلك، حدد علامة التبويب "SDK Tools" وعلّم على المربع بجوار "Show Package Details" كذلك. ابحث عن خانة "Android SDK Build-Tools" ووسعها، ثم تأكد من تحديد <code>27.0.3</code>.
| |
| | |
| أخيرًا، انقر على "Apply" لتنزيل وتثبيت Android SDK وأدوات البناء المتعلّقة بها.
| |
| | |
| =====3. إعداد متغيّر البيئة <code>ANDROID_HOME</code>=====
| |
| تتطلب أدوات React Native إعداد بعض متغيرات البيئة (environment variables) لإنشاء تطبيقات باستخدام شيفرة أصيلة.
| |
| | |
| أضف ما يلي إلى ملف الإعدادات <code>$HOME/.bash_profile</code> الخاص بك:
| |
| <syntaxhighlight lang="bash">
| |
| export ANDROID_HOME=$HOME/Library/Android/sdk
| |
| export PATH=$PATH:$ANDROID_HOME/emulator
| |
| export PATH=$PATH:$ANDROID_HOME/tools
| |
| export PATH=$PATH:$ANDROID_HOME/tools/bin
| |
| export PATH=$PATH:$ANDROID_HOME/platform-tools
| |
| </syntaxhighlight>
| |
| | |
| '''ملاحظة:''' ملفّ <code>.bash_profile</code> خاص بصدفة <code>bash</code>. إذا كنت تستخدم صدفةً (shell) أخرى، فستحتاج إلى تعديل ملف إعداد الصدفة التي تستخدمها.
| |
| | |
| نفّذ الأمر التالي في الطرفيّة (Terminal) لتحميل الإعداد الجديد على الصدفة الحاليّة:
| |
| <syntaxhighlight lang="bash">
| |
| source $HOME/.bash_profile
| |
| </syntaxhighlight>
| |
| تحقق من أنّ <code>ANDROID_HOME</code> قد أُضيفَ إلى مسار <code>PATH</code> الخاص بك عن طريق تنفيذ الأمر التالي:
| |
| <syntaxhighlight lang="bash">
| |
| echo $PATH
| |
| </syntaxhighlight>
| |
| ملاحظة: تأكّد من استخدام مسار Android SDK الصحيح. يمكنك العثور على مساره الفعلي من مربع الحوار "Preferences" في Android Studio، عبر Appearance & Behavior ثمّ System Settings ثمّ Android SDK.
| |
| | |
| ====إنشاء تطبيق جديد====
| |
| استخدم واجهة سطر الأوامر لإنشاء مشروع React Native جديد باسم "AwesomeProject":<syntaxhighlight>
| |
| react-native init AwesomeProject
| |
| </syntaxhighlight>هذه الخطوة غير ضرورية في حال كنت تريد دمج React Native مع مشروع قائم بالفعل أو إن نفّذت الأمر "eject" على مشروع Expo أو إن كان هدفك هو دعم نظام Android لمشروع React Native قائم بالفعل. (انظر صفحة [[ReactNative/platform specific code|كتابة شيفرةٍ حسب المنصة]]).
| |
| | |
| ====إعداد جهاز Android====
| |
| ستحتاج إلى جهاز Android لتشغيل تطبيق React Native الخاص بك. يمكن أن يكون هذا الجهازُ جهازًا فعليًا مثل هاتف Android، أو يمكنك استخدام جهاز Android وهميّ (Android Virtual Device) يتيح لك محاكاة (emulate) جهاز Android على حاسوبك، وهذه الطريقة هي الأكثر شيوعًا.
| |
| | |
| ستحتاج في كلتا الحالتين إلى إعداد الجهاز لتشغيل تطبيقات Android وتطويرها.
| |
| | |
| ====استخدام جهاز فعلي====
| |
| إن كنت تملك جهاز Android فعلي، فيمكنك استخدامه للتطوير بدلاً من جهاز وهميّ عن طريق توصيله بالحاسوب باستخدام سلك USB واتباع [[ReactNative/running on device|هذه الإرشادات]].
| |
| | |
| ====استخدام جهاز وهمي====
| |
| إذا استخدمت Android Studio لفتح ملفّ <code>./AwesomeProject/android</code>، فسترى قائمة أجهزة Android الوهميّة المتاحة (تُعرف اختصارًا بكلمة AVD) عبر فتح "AVD Manager" من داخل Android Studio. ابحث عن أيقونة تشبه ما يلي:
| |
| [[ملف:GettingStartedAndroidStudioAVD.png|مركز]]
| |
| إذا ثبّتت Android Studio للتّو، فأغلب الظّن أنّك ستحتاج إلى إنشاء [https://developer.android.com/studio/run/managing-avds جهاز AVD جديد]. اختر "Create Virtual Device..." ، ثم اختر أي هاتف من القائمة ثمّ انقر على "Next"، بعدها اختر Oreo API Level 27 image.
| |
| | |
| ملاحظة: إذا لم يكن مدير HAXM مثبتًا لديك، فاتبع [https://github.com/intel/haxm/wiki/Installation-Instructions-on-macOS هذه الإرشادات] لإعداده، بعد ذلك عُد إلى قائمة AVD Manager.
| |
| | |
| اضغط "Next" ثم "Finish" لإنشاء جهاز AVD الخاص بك. يجب أن تكون الآن قادرًا على الضغط على زر المثلث الأخضر بجوار AVD لتشغيل الجهاز الوهمي، بعدها انتقل إلى الخطوة التالية.
| |
| | |
| ====تشغيل تطبيقك====
| |
| | |
| نفذ الأمرين التاليين للانتقال إلى مجلد مشروع React Native الخاص بك وتشغيل التطبيق:<syntaxhighlight>
| |
| cd AwesomeProject
| |
|
| |
|
| react-native run-android
| | * [https://reactnative.dev/docs/getting-started صفحة Introduction في توثيق React Native الرسمي.] |
| </syntaxhighlight>
| |
| إذا انتهيت من جميع الإعدادات بنجاح، فسترى تطبيقك يعمل على محاكي نظام Android بعد لحظات.
| |
| [[ملف:GettingStartedAndroidSuccessMacOS.png|مركز|لاإطار]]
| |
|
| |
|
| تنفيذ الأمر <code>react-native run-android</code> طريقةٌ واحدةٌ فقط من الطرائق التي يُمكن بها تشغيل التطبيق. بإمكانك كذلك تشغيله من Android Studio أو [https://nuclide.io/ Nuclide].
| |
|
| |
| '''ملاحظة:''' إن واجهت مشكلة في تشغيل التطبيق فراجع [[ReactNative/troubleshooting|صفحة تصويب الأخطاء]].
| |
|
| |
| =====تعديل التطبيق=====
| |
|
| |
| بعد تشغيل التطبيق بنجاح، لنعدله.
| |
|
| |
| * افتح ملف <code>App.js</code> في محرر النصوص المفضل لديك وعدّل بعض الأسطر.
| |
| * اضغط على زرّ <code>R</code> مرّتين أو اختر <code>Reload</code> من قائمة Developer Menu (عبر التركيبة <code>⌘M</code>).
| |
|
| |
| =====هذا كل ما في الأمر!=====
| |
|
| |
| تهانينا! لقد شغلت وعدلت تطبيقك الأول بنجاح.
| |
|
| |
| ====ماذا بعد؟====
| |
|
| |
| * شغّل ميزة [[ReactNative/debugging|إعادة التحميل التلقائي]] (Live Reload) من قائمة المطور (Developer Menu). سيُعيد تطبيقك التحميل تلقائيًّا كلما حفظت تعديلاتك.
| |
| * إن أردت إضافة شيفرة React Native هذه لمشروع قائم بالفعل، راجع [[ReactNative/integration_with_existing_apps|دليل الدّمج]].
| |
|
| |
| لتعلّم المزيد حول React Native، ابدأ بقراءة [[ReactNative/tutorial|الدليل التطبيقي]].
| |
|
| |
| ===التطوير على نظام Windowns لمنصّة Android===
| |
| ===التطوير على نظام Linux لمنصّة Android===
| |
|
| |
| == مصادر ==
| |
| * [https://facebook.github.io/react-native/docs/getting-started توثيق React Native الرسمي.]
| |
| [[تصنيف:ReactNative]] | | [[تصنيف:ReactNative]] |
| | [[تصنيف:React Native Docs]] |
مرحبًا بك في بداية رحلتنا إلى إطار عمل React Native. إن أردت الاطّلاع على تعليمات إعداد البيئة، فقد انتقلت إلى قسمها الخاص. ستجد في هذه الصفحة مدخلًا إلى التوثيق والمكونات الأصيلة ومكتبة React وغير ذلك.
كُتِب هذا التوثيق لجميع الأشخاص الذين يريدون تعلّم React Native بغض النظر عن مستوى خبرتهم أو خلفيتهم ابتداءً من من مطوري تطبيقات iOS الخبراء إلى متعلّمي React المبتدئين، والأشخاص الذين يتعلّمون البرمجة لأول مرة في حياتهم المهنية.
كيفية استخدام هذا التوثيق
يمكنك البدء من هذه الصفحة وقراءة هذا التوثيق تسلسليًا كأنك تقرأ كتابًا، أو يمكنك قراءة الأقسام المحدَّدة التي تحتاجها فقط. إن كنت على دراية بمكتبة React، فيمكنك تخطي قسم أساسيات مكتبة React، أو قراءته لتجديد معلوماتك.
المتطلبات الأساسية
ستحتاج إلى فهم أساسيات لغة JavaScript للعمل مع React Native. إن كنت جديدًا على لغة جافا سكريبت أو بحاجة إلى تجديد معلوماتك، فيمكنك الغوص في توثيق لغة JavaScript على موسوعة حسوب.
افترضنا عدم وجود معرفة مسبقة بتطوير تطبيقات React أو Android أو iOS لدى قارئ هذا التوثيق، ولكنها مواضيع قيّمة ليدرسها مطوّر React Native الطموح، لذلك ربطنا القارئ بالموارد والمقالات اللازمة ليتعمّق في هذه المواضيع أكثر.
أمثلة تفاعلية
يتيح لك هذا المدخل البدء على الفور ضمن متصفحك بأمثلة تفاعلية كهذا المثال (تجربة حية):
import React from 'react';
import { Text, View } from 'react-native';
const YourApp = () => {
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
<Text>
Try editing me! 🎉
</Text>
</View>
);
}
export default YourApp;
يمكنك استخدام الأداة Snack Player التي هي أداة مفيدة أنشأها Expo لتضمين وتشغيل مشاريع React Native ومشاركة كيفية تصييرها render على منصات مختلفة مثل Android و iOS. وضعنا لك قبل كل مثال رابطًا لتجربة حية له على Snack Player يمكِّنك من تجربة المثال على مختلف الأجهزة والبيئات إن أردت ذلك وحتى نسخ الشيفرة إلى حسابك على Expo أو يمكنك الاطلاع على المثال مباشرةً ونسخ الشيفرة من الموسوعة.
إن أردت إعداد بيئة تطوير محلية، فيمكنك اتباع دليلنا لإعداد بيئتك على جهازك المحلي ولصق أمثلة الشيفرة في ملف App.js
الخاص بك (إذا كنت مطور ويب، فقد يكون لديك بالفعل بيئة محلية معدَّة لاختبار متصفح الهاتف المحمول).
مكونات الدالة Function Components ومكونات الصنف Class Components
يمكنك إنشاء مكوّنات باستخدام دوال أو أصناف في React. كانت مكونات الصنف سابقًا هي المكونات الوحيدة التي يمكن أن يكون لها حالة، ولكن أصبح بإمكانك إضافة حالة وغير ذلك إلى مكونات الدالة منذ بداية ظهور واجهات API الخاصة بخطّافات React.
ظهرت الخطافات Hooks في الإصدار 0.59 من React Native، وبما أن الخطافات هي الطريقة المستقبلية لكتابة مكونات React الخاصة بك، فقد استخدمنا أمثلة لمكونات الدالة بالإضافة إلى مكونات الصنف كما يلي:
مكون الدالة
تجربة حية للمثال:
import React from 'react';
import { Text, View } from 'react-native';
const HelloWorldApp = () => {
return (
<View style={{
flex: 1,
justifyContent: 'center',
alignItems: 'center'
}}>
<Text>Hello, world!</Text>
</View>
);
}
export default HelloWorldApp;
مكون الصنف
تجربة حية للمثال:
import React, { Component } from 'react';
import { Text, View } from 'react-native';
class HelloWorldApp extends Component {
render() {
return (
<View style={{
flex: 1,
justifyContent: "center",
alignItems: "center"
}}>
<Text>Hello, world!</Text>
</View>
);
}
}
export default HelloWorldApp;
يمكنك الاطلاع على مزيد من أمثلة مكونات الصنف في الإصدارات السابقة من هذا التوثيق باللغة الإنجليزية.
ملاحظات المطور
يأتي الأشخاص الذين يريدون تعلّم React Native من خلفيات متنوعة، فقد تكون لديك خبرة في مجموعة من التقنيات، من الويب إلى تطبيقات Android و iOS وغير ذلك، لذلك حاولنا كتابة هذا التوثيق للمطورين من جميع تلك الخلفيات. سنقدّم أحيانًا تفسيرات خاصة بإحدى المنصات أو غيرها كما يلي:
- Android: قد يكون مطورو Android على دراية بهذا المفهوم.
- iOS: قد يكون مطورو iOS على دراية بهذا المفهوم.
- الويب: قد يكون مطورو الويب على دراية بهذا المفهوم.
حان الوقت للتعرف على أساس إطار عمل React Native وهو المكونات الأصيلة Native Components، بعد أن عرفت كيفية عمل هذا الدليل.
مصادر