الفرق بين المراجعتين لصفحة: «ReactNative/getting started»

من موسوعة حسوب
لا ملخص تعديل
طلا ملخص تعديل
 
(26 مراجعة متوسطة بواسطة 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.
</syntaxhighlight>


بعد إكمالك لعملية الإعداد، تستطيع تشغيل تطبيقك على جهاز Android الافتراضي عن طريق تنفيذ الأمر:<syntaxhighlight>
=== مكون الصنف ===
npm run android
[https://snack.expo.dev/@hsoubwiki/hello-world-function-component تجربة حية للمثال]:<syntaxhighlight lang="javascript">
</syntaxhighlight>كما تستطيع تشغيله على محاكي iOS بتنفيذ الأمر التالي (على نظام macOS فقط):<syntaxhighlight>
import React, { Component } from 'react';
npm run ios
import { Text, View } from 'react-native';
</syntaxhighlight>


===محاذير يجب الانتباه إليها عند استخدام Expo===
class HelloWorldApp extends Component {
  render() {
    return (
      <View style={{
          flex: 1,
          justifyContent: "center",
          alignItems: "center"
        }}>
        <Text>Hello, world!</Text>
      </View>
    );
  }
}


لأنّ مشروعك المبني باستخدام Expo لا يحتوي على شيفرة أصيلة، فلا يمكن تضمين وحدات أصلية مُخصّصة  (custom native modules) باستثناء واجهات React Native البرمجية (React Native APIs) والمكونات المتوفّرة في تطبيق عميل Expo (أي التطبيق الذي تثبته على هاتفك).
export default HelloWorldApp;
</syntaxhighlight>يمكنك الاطلاع على مزيد من أمثلة مكونات الصنف في [https://reactnative.dev/versions الإصدارات السابقة من هذا التوثيق باللغة الإنجليزية].


إن كنت تعلم مسبقًا أنك ستحتاج لإضافة شيفرةً أصيلة خاصة بك،  فلا يزال استخدام Expo خياراً مناسباً لبدء تعلّم React Native. إذ كل ما عليك فعله في هذه الحالة هو تنفيذ عمليّة [https://docs.expo.io/versions/latest/expokit/eject '''الإخراج''' عبر الأمر <code>eject</code>] لبناء شيفرتك الأصيلة. إن نفّذت عملية الإخراج، فمن الضروري اتباع الخطوات المذكورة في قسم "بناء مشاريع بشيفرة أصيلة" أسفله لمواصلة العمل على مشروعك.
== ملاحظات المطور ==
يأتي الأشخاص الذين يريدون تعلّم React Native من خلفيات متنوعة، فقد تكون لديك خبرة في مجموعة من التقنيات، من الويب إلى تطبيقات Android و iOS وغير ذلك، لذلك حاولنا كتابة هذا التوثيق للمطورين من جميع تلك الخلفيات. سنقدّم أحيانًا تفسيرات خاصة بإحدى المنصات أو غيرها كما يلي:


تقوم واجهة سطر أوامر Expo بإعداد مشروعك بأحدث نسخة من React Native يدعمها تطبيق عميل Expo. عادة ما يدعم تطبيق عميل Expo نسخةً جديدة من React Native بعد حوالي أسبوع من إصدارها كنسخة مستقرة. بإمكانك الإطلاع على هذا [https://docs.expo.io/versions/latest/sdk/#sdk-version المستند] لمعرفة الإصدارات المدعومة.
* '''Android''': قد يكون مطورو Android على دراية بهذا المفهوم.
* '''iOS''': قد يكون مطورو iOS على دراية بهذا المفهوم.
* '''الويب''': قد يكون مطورو الويب على دراية بهذا المفهوم.


إن كنت تنوي دمج React Native مع مشروع قائم بالفعل، فتخطّ سطر أوامر Expo وابدأ مباشرة بإعداد بيئة التطوير باستخدام أدوات البناء الأصيلة. انظر "بناء مشاريع بشيفرة أصيلة" أسفله.
حان الوقت للتعرف على أساس إطار عمل React Native وهو [[ReactNative/intro react native components|المكونات الأصيلة Native Components]]، بعد أن عرفت كيفية عمل هذا الدليل.


==بناء مشاريع بشيفرة أصيلة==
== مصادر ==
اتّبع هذه الإرشادات إن أردت بناء شيفرة أصيلة في مشروعك.


===التطوير على نظام macOS لمنصّة iOS===
* [https://reactnative.dev/docs/getting-started صفحة Introduction في توثيق React Native الرسمي.]
===التطوير على نظام macOS لمنصّة Android===
===التطوير على نظام Windowns لمنصّة Android===
===التطوير على نظام Linux لمنصّة Android===


== مصادر ==
* [https://facebook.github.io/react-native/docs/getting-started توثيق React Native الرسمي.]
[[تصنيف:ReactNative]]
[[تصنيف:ReactNative]]
[[تصنيف:React Native Docs]]

المراجعة الحالية بتاريخ 13:34، 9 أكتوبر 2021

مرحبًا بك في بداية رحلتنا إلى إطار عمل 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، بعد أن عرفت كيفية عمل هذا الدليل.

مصادر