سفارش تبلیغ
صبا ویژن

آموزش React Native: نوشتن برنامه­های اندرویدی با استفاده از جاوا

در این مقاله­ آموزش React Native، نوشتنِ برنامه­‌های نیتیو را با استفاده از کتابخانه­‌ی بسیار معروفِ جاوااسکریپتِReact یاد خواهید گرفت. تمرکز اصلی ما روی پلتفرم اندروید است.

تفاوت اصلی React Native با سایر فریم ورک‌ها:

تفاوت اصلی React Native با سایر فریمورک­‌ها، مانندِ (PhoneGap)(Apache cordova) یا تیتانیوم شرکت (Appcelerator Titanium) که از جاوااسکریپت برای توسعه­ برنامه‌­های iOSای استفاده می­کنند، چیست؟

  1. (برخلافِ فون­گپ) با استفاده از React Native کد شما به زبانِ جاوااسکریپت نوشته می‌­شود، اما UI برنامه کاملاً نیتیو است. این برنامه مشکلاتی را، که برنامه‌­های هیبریدی HTML5 اغلب با آن مواجه­‌اند، ندارد.
  2. به‌­علاوه (برخلافِ تیتانیوم)، ری­اکت رویکردی تازه، اساسی و بسیار کارامد را برای ساخت واسط­‌های کاربری معرفی می­کند. UI­تان متدی از حالت کنونی برنامه (current app state) است.

آموزش PhoneGap و Cordova (ششمین دوره از مجموعه صد روز تا دولوپری)

React Native ،ری ­‌اکت را وارد حوزه­ برنامه‌­های موبایلی می‌­کند. هدفش این نیست که یکبار برنامه‌­ای را بنویسیم و بعد بتوانیم آن را روی هر پلتفرمی اجرا کنیم. هدف یادگیری یکباره (به شیوه­ی ری­اکت) و کدنویسی در هرجایی است. تصمیمی مهم که باید گرفته شود.

انجمن حتی ابزارهایی مانندِ  Expo و Create React Native App را برای کمک بهتان اضافه کرده است تا بدون نیاز به Xcode یا اندروید استودیو بتوانید برنامه­‌های React Native را بنویسید.

می­‌توانید برنامه­‌های React Native را هم برای اندروید و هم برای iOS بنویسید، اما در این آموزش تنها به اندروید می­پردازیم.

در این مقاله­ آموزشی مراحلِ نوشتن یک برنامه­ اندرویدی را برای جست­­وجوی املاک در بریتانیا خواهید دید.

نگران این موضوع نباشید که هرگز قبلاً کدِ جاوا اسکریپت ننوشته­اید یا از ویژگی­هایی مانند CSS که در ادامه می­بینید، استفاده نکرده‌­اید. در این آموزش گام به گام پیش خواهیم رفت و برای یادگیری بیشتر شما منابعی را معرفی خواهیم کرد.

آماده­اید؟ به خواندن ادامه دهید.

شروع به کار

Node و JDK

React Native از Node.js، که یک محیط اجرایی جاوااسکریپت است، برای ساختِ کد جاوااسکریپت شما استفاده می­‌کند. React Native هم­چنین از یک نسخه­‌ی به­‌روزِ JDK برای اجرای برنامه­‌ی اندروید استفاده می­‌کند. دستورالعمل­‌های زیر را برای سیستم خودتان اجرا کنید تا از نصبِ ورژن­‌های لازم مطمئن شویم.

آموزش Node.js رایگان – راهنمای جامع مبتدیان پروژه محور

سیستم عامل مک (MacOs)

در ابتدا با استفاده از راهنمایی‌­های موجود در سایت Homebrew ، Homebrew را نصب کنید. سپس با اجرای کد زیر در ترمینال Node.js را نصب کنید.

  1. brew install node

سپس، از homebrew  برای نصبِ Watchman استفاده کنید. واچ­من یک فایل­واچر (File Watcher) از شرکت فیسبوک است.

  1. brew install watchman

ری­اکت نیتیو از واچ­من استفاده می­کند تا تغییراتِ انجام شده روی کد را بفهمد و مطابق با آن برنامه را ری­بیلد (rebuild) کند. این کار دقیقاً شبیه اندروید استودیو است که در هر بار ذخیره­ فایل برنامه را بیلد (build) می­کند.

در پایان نیز اگر لازم بود، JDK8 یا ورژن جدیدتر آن را دانلود و نصب کنید.

سیستم عامل ویندوز (Windows)

در ابتدا با استفاده از راهنمایی­‌های موجود در سایت Chocolatey، Chocolatey را نصب کنید.

اگر Node.js ندارید یا نسخه­ آن قدیمی‌­تر از 4 است، آن را نصب کنید. کد زیر را در حالت Administrator اجرا کنید. (روی برنامه­ command prompt راست کلیک کنید و “Run as Administrator” را انتخاب کنید.)

  1. choco install -y nodejs.install

برای اجرای بیلد اسکریپت­های (Build Scripts) ری­اکت نیتیو، پایتون لازم داریم. اگر پایتون2 را نصب ندارید، کد زیر را در حالت Administrator اجرا کنید:

اگر JDK را نصب ندارید یا نسخه­ی آن قدیمی­تر از 8 است، کد زیر را در حالت Administrator اجرا کنید:

  1. choco install -y python2

لینوکس (Linux)

با استفاده از “دستورالعمل­های نصبِ موجود برای توزیع لینوکس”  Node.js را نصب کنید. به ورژن 6 یا جدیدتر از آن نیاز خواهید داشت.

در آخر و در صورت نیاز، JDK 8 یا ورژن جدیدتر آن را دانلود و نصب کنید.

React Native CLI

از Node Package Manager (یا nmp) برای نصبِ واسط دستوری ری­اکت نیتیو (CLI) استفاده کنید. در ترمینال (ترمینال، command prompt یا shell) تایپ کنید:

  1. npm install -g react-native-cli

دستور npm به طور کلی ابزار CLI را دانلود و نصب می­‌کند. عملکرد nmp مشابه JCenter (لینک موجود در مقاله­ی اصلی اضافه گردد) است و در پکیج Node.js قرار گرفته است.

در ادامه، با استفاده از راهنمایی‌­های موجود در سایت Yarn ، Yarn را نصب کنید. یارن کلاینتی پرسرعت برای nmp است.

محیط توسعه­ اندروید (Android development Environment)

اگر قبلا محیط توسعه­ اندروید خود را برپا نکرده­اید، این کار را انجام دهید. مطمئن شوید که یک برنامه­ اندرویدی به خوبی در امولاتور (emulator) اجرا می‌­شود.

React Native به Android 6.0 (Marshmallow) نیاز دارد. در اندروید استودیو مسیر روبه­‌رو را دنبال کنید: Tools/Android/SDK Manager. SDK Platforms و سپس Show Package Details را انتخاب کنید. مطمئن شوید که همه­ آیتم‌­های زیر انتخاب شده­‌اند:

  • Google APIs, Android 23
  • Android SDK Platform 23
  • Intel x86 Atom_64 system Image
  • Google APIs Intel x86 Atom_64 System Image

آموزش React Native

در ادامه SDK Tools و سپس Show Package Details را انتخاب کنید. با کلیک روی فلش،Android SDK Build Tools را باز کنید و بررسی کنید که 23.0.1 انتخاب شده باشد.

در آخر برای نصب آنها روی Apply کلیک کنید.

پس از اینکه اندروید کامپوننت­‌های انتخابی را نصب کرد، با اجرای SDK Platform 23 امولاتوری بسازید.

برنامه­ اولیه را بسازید

به پوشه‌­ای بروید که می­خواهید برنامه را در آن ذخیره کنید و کد زیر را در ترمینال اجرا کنید:

  1. react-native init PropertyFinder

این کد از CLI استفاده می­کند و پروژه­ای اولیه را برایتان می­‌سازد که شامل همه­ چیزهایی است که برای ساخت و اجرای برنامه­ React Native به آن نیاز دارید.

در ترمینال کد زیر را اجرا کنید:

  1. cd PropertyFinder

در پوشه‌­ها و فایل­‌های ایجاد شده برخی آیتم‌­های قابل توجه را پیدا خواهید کرد:

  • node_modules پوشه­ای است که فریمورک React Native در آن هستند.
  • js نقطه­ اجرای برنامه (Entry point) است که CLI آن را ساخته است.
  • js برنامه­ اصلی است که CLI آن را ایجاد کرده است.
  • android پوشه‌­ای است که پروژه­ اندروید و کدی که برای bootstrap کردن برنامه به آن احتیاج دارید، در آن هستند.
  • iOS پوشه­‌ای است که کدهای مربوط به iOS در آن است و در این آموزش به آن کاری نخواهید داشت.

اگر امولاتور اندروید در حال اجرا نیست، آن را با اجرای SKD 23 اجرا کنید.

کد زیر را در ترمینال اجرا کنید:

  1. react-native run-android

امولاتور تصویر زیر را نشان خواهد داد.

آموزش React Native

اگر پیغام خطایی به صورت “SDK location not found!” دریافت کردید، کارهای زیر را به ترتیب انجام دهید:

  • به پوشه­ android/ پروژه­ی react-native خود بروید.
  • با استفاده از کد زیر، فایلی با نام local.properties ایجاد کنید.
  1. sdk.dir = {PATH TO ANDROID SDK}

برای مثال، در سیستم عامل مک، مسیر SDK چیزی شبیه این است:

/Users/USERNAME/Library/Android/sdk.

حتماٌ متوجه شدید که پنجره­ ترمینالی باز شده است و چیزی شبیه تصویر زیر را نشان می­دهد:

آموزش React Native

این Metro Bundler است، یک باندلر جاوااسکریپت برای React Native که در Node.js اجرا می­شود. کمی بعد به­‌خوبی درباره­ وظیفه­ آن توضیح خواهم داد.

پنجره­ ترمینال را نبندید و بگذارید در پس­ زمینه اجرا شود. اگر اشتباهاً آن را بستید، تنها کافی است کد زیر را در ترمینال اجرا کنید:

  1. react-native start

توجه: در این آموزش React Native، کد جاوااسکریپت می­نویسید و نیازی به اندروید استودیو برای ویرایش کدهای خود ندارید. من ازSublime Text استفاده می­کنم که برنامه­‌ای ارزان و همه­‌کاره است، اما می­‌توانید از برنامه­‌هایی مثل Atom ، Brackets یا هر برنامه­ ویرایش متن سبک دیگری برای کد نویسی استفاده کنید.

موضوعات پایه­ React Native

در این بخش، با کار کردن روی PropertyFinder با موضوعات پایه­ React Native آشنا خواهید شد.

را با برنامه­ ویرایش فایل انتخابی خود، فایل App.js باز کنید و نگاهی به ساختار کد بیندازید:

  1. import React, { Component } from "react"; // 1 
  2. import {Platform, StyleSheet, Text, View} from "react-native";
  3.  
  4. const instructions = Platform.select({ ... }); // 2 
  5.  
  6. type Props = {};
  7. export default class App extends Component<Props> { ... } // 3 
  8.  
  9. const styles = StyleSheet.create({ ... }); // 4

بیایید با هم گام به گام کد را بررسی کنیم:

  1. ماژول­‌های لازم را ایمپورت (import) می­‌کند.
  2. یک پیغام متناسب با پلتفرم را تنظیم می­‌کند.
  3. کامپوننتی (component) را، که مسئول UI است، تعریف می­کند.
  4. شئ­ای با نام styles ایجاد می­کند که layout و ظاهر کامپوننت را کنترل می­کند.

نگاهی دقیق­‌تر به این کد ایمپورت بیندازید:

  1. import React, { Component } from "react";

این کد از سینتکس ایمپورت ECMAScript 6 ES6 برای لود کردن ماژول react و اختصاص آن به متغیری به نام React استفاده می­‌کند. این کار تقریبا مشابه ایمپورت کردن کتابخانه­‌ها در اندروید است. هم­چنین از چیزی به نام destructuring assignment برای آوردن شئ Component به برنامه استفاده می­‌کند. Destructuring به شما این امکان را می­دهد که چندین property شئ را برداشته و با استفاده از تنها یک خط کد آنها را به چندین متغیر اختصاص دهید.

استفاده از ES6 روشی بهتر برای نوشتن جاوااسکریپت است، چون از ویژگی­‌هایی مانند پارامترهای دیفالت، کلاس­‌ها، توابع فلش (استفاده از علائم برای کوتاه کردن سینتکس توابع) (arrow functions) و Destructuring assignment پشتیبانی می­کند. تمامی مرورگرها از ES6 پشتیبانی نمی­‌کنند. ری­اکت نیتیو از ابزاری به نام Babel استفاده می­کند تا در صورت لزوم به صورت خودکار کد جاوااسکریپت مدرن را به کد جاوااسکریپت قدیمیِ سازگار با مرورگر ترجمه کند.

برگردیم سراغ App.js، به تعریف کلاس نگاهی بیندازید:

  1. export default class App extends Component<Props>

این کد، کلاسی را تعریف می­‌کند که از یک Component ری­اکت ارثبری (Extend) دارد. Modifier کلاس export default کلاس را پابلیک (Public) می‌کند و اجازه­ استفاده از این کلاس را در سایر فایل­‌ها می‌دهد.

فایل index.js را باز کنید و نگاهی به فایل نقطه­ی شروع اجرای برنامه (entry point) بیندازید:

  1. import {AppRegistry} from "react-native";
  2. import App from "./App";
  3. import {name as appName} from "./app.json";
  4.  
  5. AppRegistry.registerComponent(appName, () => App);

این کد کامپوننت ایمپورت شده را به عنوان نقطه­ شروع اجرای برنامه تعیین می­‌کند.

حالا زمانِ نوشتن برنامه­ رسیده است.

در فایل App.js، کد زیر را در بالای برنامه و قبل از کدهای مربوط به ایمپورت وارد کنید:

  1. "use strict";

این کد حالت Strict Mode, را فعال می­کند. در این حالت راحت­‌تر می‌­شود خطاها را مدیریت کرد و برخی از ویژگی­‌های نامناسب زبان جاوااسکریپت غیرفعال می­‌شوند. به زبانی ساده، این کد جاوااسکریپت را بهتر می­کند!

در کلاس App، به جای render() کد زیر را قرار دهید:

  1. render(){ 
  2. return React.createElement(Text, {style: styles.description}, "Search for houses to buy!");
  3.  }

کلاس App از React.Component ارث می­برد، که ابتدایی­ترین قسمت UI ری­اکت است. کامپوننت­‌ها شامل immutable properties (خصیصه­‌های تغییرناپذیر) و Mutable state variables (متغیرهای استیت تغییرپذیر) هستند و تابعی را برای رندر گرفتن عرضه می­‌کنند. برنامه­ موردنظر بسیار ساده است و تنها به یک متد رندر نیاز دارد.

کامپوننت­‌های React Native شبیه کلاس­‌های view اندروید نیستند، بلکه معادل سب‌ک­تر آنها هستند. فریمورک، درخت کامپوننت­‌های ری­اکت را به UI نیتیو موردنیاز تبدیل می­کند.

درادامه، به جای const styles کد زیر را بنویسید:

  1. const styles = StyleSheet.create({ 
  2. description: {
  3. fontSize: 18,
  4. textAlign: "center",
  5. color: "#656565",
  6. marginTop: 65,
  7. },
  8. });

این کد استایلی ساده به متنِ توضیحات شما می‌­دهد. اگر قبلاٌ کد نویسی تحت وب کار کرده باشید، احتمالاٌ برخی از اسامی propertyهای بالا برایتان آشناست. کلاسِ StyleSheet ری­اکت نیتیوی که برای تنظیم استایلِ UI برنامه استفاده شده، مشابه با Cascading Style Sheets CSS است که در برنامه‌­نویسی تحت وب از آن استفاده می­‌شود.

سپس تکه کد instructions را حذف کنید چون دیگر به آن نیازی ندارید.

تغییرات را در App.js ذخیره کنید و امولاتور را باز کنید. دو بار دکمه­ R کیبورد را بزنید و می­بینید که برنامه­ جست­وجوی ملک نوپای شما کم­کم روی صفحه شکل می­گیرد:

آموزش React Native

چیزی 

 

 

منبع: فرانش