Table of Contents
מה זה React Native?
React Native היא מסגרת קוד פתוח שפותחה על ידי פייסבוק המאפשרת למפתחים לבנות יישומים ניידים באמצעות JavaScript ותגובה.בניגוד לגישות היברידיות מסורתיות שהופכות את תצוגות האינטרנט, React Native מדגמים לרכיבי פלטפורמה מקומיים.זה אומר שהממשק של האפליקציה בנוי עם נופים אמיתיים (כמו FLT:0 על iOS ו-FLT:1 באנדרואיד), וכתוצאה מכך ביצועים שמתאימים באופן הדוק יישומים מקומיים באופן מלא.
React Native שוחרר לראשונה בשנת 2015 ומאז אומץ על ידי חברות גדולות כולל Instagram, Shopify, ו- discod. הקהילה התוססת שלה ואת המערכת האקולוגית של ספריות לעשות את זה בחירה מעשית עבור סטארט-אפים וארגונים כאחד.
להתחיל עם React Native: סביבה
לפני כתיבת קוד אינדיאני תגובה, עליך להגדיר את סביבת הפיתוח שלך.הצעדים המדויקים שונים בהתאם אם אתה מכוון iOS, אנדרואיד או שניהם, ואם אתה משתמש ב- React Native CLI או אקספוזה.
Prerequisites
- (ב) ויקרא י"א): "ה' (ו') ויקרא (ב') ויקרא י' (ב') ויקרא י"ד): "וַיָּעָשָׂעָשָׂה" (בראשית כ"ד, ט).
- (ב) ⁇ :0 (macOS/Linux): כלי צפייה בקובץ על ידי פייסבוק שמשפר את הביצועים.
- (FLT:0)Xcode (iOS בלבד): נדרש לבניית ובדיקות על סימולטורי iOS.הורדת מ- Mac App Store.וודא שיש לך את כלי קו ה-Xcode העדכניים ביותר שהותקנו.
- (FLT:0אנדרואיד) סטודיו (אנדרואיד בלבד): FLT:1ua נדרש עבור חיקויי אנדרואיד וכלי. הגדרת מכשיר וירטואלי אנדרואיד (AVD) במהלך ההתקנה.
בחירת תגובה בין React Native CLI ו-Expore
שתי דרכים עיקריות קיימות כדי להתחיל פרויקט תגובה:
- (FLT:0) React Native CLI:FLT:1 הגישה החשופה-מטלית.יש לך שליטה מלאה על קוד Native ויכול לשלב כל מודול Native. Best עבור פרויקטים הדורשים תכונות Nativeות או אופטימיזציה של ביצועים.
- (ה) [ה]המסגרת מנוהלת על גבי המשיבים (הידועה על ידי התצורה של הילידים, והיא מספקת קבוצה עשירה של מודולים שנבנו מראש (הגדלה, הודעות דחיפה וכו ') אידיאלי עבור פרויקטים מהירים ופרויקטים שאינם זקוקים לקוד Native מותאם אישית.
עבור מדריך זה, אנו נשתמש ב- React Native CLI כי זה נותן לך את הגמישות ביותר ליצור פרויקט חדש, לרוץ:
npx @react-native-community/cli init MyApp
לאחר הזינוק, לנווט בתיקיה הפרויקט ולנהל את ה- 4 כדי לשגר את מזחלת המטרו, ולאחר מכן פתח מסוף שני ולנהל את FLT:5 או FLT:6 כדי להשיק את האפליקציה על אדאודור או מכשיר.
המונחים: React Native
Mastering React Native דורש הבנה של אבני הבניין הליבה שלה - מהם הרחבות ישירות של תגובה עבור האינטרנט.
המונחים
כל דבר ב- React Native הוא רכיב.המסגרת מספקת סט של מרכיבים מרכזיים הממפה לאלמנטים הילידים של UI:
- (ב) ויקרא י"א: "א' (ב) ,ב"ה) ,"ה' (ב"ב)" (ב)"ב)"ב"ה, "הכולה" (ב"ב)" (ב"ב)
- (ב) ויקרא י"א: "בְּהִנְתָּבְתָּבְתָּבָה אִתָּבָה הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא .
- (ב) ויקרא י"ד: "ה' אלקים" (ב"ב)
- (ב) ויקרא י"א: "א' (ב) ,ב"ה)
- (ב) ויקרא י"א: "בְּבְּבְתָּבָר" (במדבר כ"ד).
- (ב) ויקרא י"ד: "ה' א'" (ב"ב)
- (ב) [15] ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
ניתן גם להלחין רכיבים מותאמים אישית על ידי שילוב פרימיטיביים אלה.לרשימה מלאה, לבדוק את ה-FLT:0 רשמי תגובה Native Document FLT:1.
מדינה והצעות
אלה אותם מושגים כמו תגובה לאינטרנט:
- [ה]הנביאים: [ה] [ה]] [ה]] [ה]] [ה]]] [ה]]] [ה]]], הם [ה] אינם אלא ערכים של [ההה], אלא הם עוברים מרכיב הורים למרכיב ילדים.
- (ב) ,0) ,(ה) ,(ה) ,(ה) ,(ה) ,(ה) ,(ה) , כאשר המדינה משתנה, הרכיב מחדש של השימוש ב-FLT:16 , קידוד (רכיבים פונקציונליים) או FLT:17 (מרכיבים של מעמד).
דוגמה:
import React, { useState } from 'react';
import { View, Text, Button } from 'react-native';
const Counter = () => {
const [count, setCount] = useState(0);
return (
<View>
<Text>You pressed {count} times</Text>
<Button title="Press me" onPress={() => setCount(count + 1)} />
</View>
);
};
export default Counter;
ניווט ניווט
ניווט אינו בנוי ל- React Native הליבה.הפתרון הפופולרי ביותר הוא FLT:0 [React ניווטph:] הוא מספק ערימה navigator (כמו ערימה ניווט), טבליה נווט, ו-Nvigator.
npm install @react-navigation/native @react-navigation/stack
לאחר ההתקנה, עוטפים את האפליקציה שלך עם FLT:20 והגדרת המסכים שלך:
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
const Stack = createStackNavigator();
function App() {
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Details" component={DetailsScreen} />
</Stack.Navigator>
</NavigationContainer>
);
}
Styling
(הופנה מהדף JavaScript Object for styling במקום CSS.You מגדיר סגנונות באמצעות פריטים (FLT:22 או Inline Objects) מנוע הפריסה הוא Flexbox כברירת מחדל, עם תכונות כמו FLT:23,FLT:24, FLT:24, ; 25 אין שאילתות מדיה CSS; עיצוב רדוק מושג באמצעות ה-FLT:26 API או ספריות כמו:FLT:27.
יצירת ערכת ה- Cross-Platform הראשונה שלך: A Step-by-Step
בואו נבנה אפליקציה פשוטה מזג אוויר שמביאה נתונים מ- API ציבורי ומציגה אותו בשני הפלטפורמות.זה יפגין ניהול המדינה, בקשות רשת ורכיבה.
שלב 1: הקמת פרויקט
יצירת פרויקט חדש באמצעות React Native CLI:
npx @react-native-community/cli init WeatherApp
cd WeatherApp
שלב 2: התקנת תלות
צריך כמה חבילות:
npm install @react-navigation/native @react-navigation/stack react-native-screens react-native-safe-area-context
עבור שיחת ה- API, אנו נשתמש ב-InFLT:30 API.Optionally InstallFLT:31 עבור סמלים.
שלב 3: בניית מסך הבית
יצירת:
import React, { useState, useEffect } from 'react';
import { View, Text, TextInput, Button, StyleSheet, ActivityIndicator } from 'react-native';
const API_KEY = 'YOUR_OPENWEATHERMAP_API_KEY';
const BASE_URL = 'https://api.openweathermap.org/data/2.5/weather';
const HomeScreen = () => {
const [city, setCity] = useState('');
const [weather, setWeather] = useState(null);
const [loading, setLoading] = useState(false);
const [error, setError] = useState(null);
const fetchWeather = async () => {
if (!city.trim()) return;
setLoading(true);
setError(null);
try {
const response = await fetch(`${BASE_URL}?q=${city}&appid=${API_KEY}&units=metric`);
const data = await response.json();
if (data.cod !== 200) {
setError(data.message);
} else {
setWeather(data);
}
} catch (err) {
setError('Network error');
} finally {
setLoading(false);
}
};
return (
<View style={styles.container}>
<Text style={styles.title}>Weather App</Text>
<TextInput
style={styles.input}
placeholder="Enter city name"
value={city}
onChangeText={setCity}
/>
<Button title="Get Weather" onPress={fetchWeather} />
{loading && <ActivityIndicator size="large" />}
{error && <Text style={styles.error}>{error}</Text>}
{weather && (
<View style={styles.weatherContainer}>
<Text style={styles.cityName}>{weather.name}</Text>
<Text>Temperature: {weather.main.temp}°C</Text>
<Text>Conditions: {weather.weather[0].description}</Text>
</View>
)}
</View>
);
};
const styles = StyleSheet.create({
container: { flex: 1, justifyContent: 'center', alignItems: 'center', padding: 20 },
title: { fontSize: 24, fontWeight: 'bold', marginBottom: 20 },
input: { borderWidth: 1, borderColor: '#ccc', borderRadius: 5, width: '80%', padding: 10, marginBottom: 10 },
error: { color: 'red', marginTop: 10 },
weatherContainer: { marginTop: 20, alignItems: 'center' },
cityName: { fontSize: 20, fontWeight: '600', marginBottom: 10 }
});
export default HomeScreen;
שלב 4: ניווט
ב[[1948]], [[1924]], [[1924]], [[1924]]]]]], [[1966]], [[1924]]]]]], [[1924]]]]
import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import HomeScreen from './screens/HomeScreen';
const Stack = createStackNavigator();
export default function App() {
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Home" component={HomeScreen} options={{ title: 'Weather' }} />
</Stack.Navigator>
</NavigationContainer>
);
}
שלב 5: הפעלת האפליקציה
התחל מטרו ארגמן (FLT:36), ולאחר מכן לרוץ על אנדרואיד (ראהפל 37) או iOS (ראה FLT:38) אתה צריך לראות קלט טקסט, כפתור ונתוני מזג אוויר לאחר שיחת API מוצלחת.
אפליקציה בסיסית זו עובדת על שתי הפלטפורמות עם קוד JavaScript זהה.זה הכוח של React Native.
היתרונות של React Native
- (FLT:0)קוד אחריות: 1.FLT:1 שיתוף לוגיקה עסקית, ניהול המדינה ורכיבי UI על פני פלטפורמות.You יכול אפילו להשתמש בקוד באמצעות אפליקציה אינטרנט באמצעות React Native for Web.
- (FLT:0)Performance:FLT:1 (הביצועים הקרובים ל-UI נעשה באמצעות רכיבים מקומיים, לא תצוגות אינטרנטיות. חוט JavaScript פועל באופן מסונכרן, וניתן להוריד חישובים כבדים למודולים ילידיים.
- (FLT:0)Large Community & Ecosystem:BuildFLT:1; אלפי ספריות, קהילה תוססת על GitHub, וכלי נרחב.בעיות הן מאוד מחוסנים, ותוספים קיימים כמעט לכל צורך.
- (FLT:0) פיתוח עם עומס חם: FIRLT:1 , מחסני המטרו תומך החלפת מודול חם (HMR) אתה יכול לערוך את הקוד ולראות שינויים מיד ללא בנייה מחדש של האפליקציה כולה.
- (FLT:0)Over-the-Air Updates:FearLT:1 עם שירותים כמו Microsoft App Center או CodePush, באפשרותך לדחוף את JavaScript ועדכוני נכסים ישירות למשתמשים ללא אישור בחנות.
- צוות אחד יכול לשמור על בסיס קוד יחיד במקום שתי קבוצות מקומיות נפרדות.
אתגרים ומגבלות
למרות החוזקות שלו, React Native הוא לא כדור כסף:
- (FLT:0) מודולים מודולים: 1.10.10.10.10.7 כאשר אתה צריך לגשת תכונות המכשיר לא מכוסה על ידי ספריות הליבה או הקהילה (למשל, Bluetooth מתקדמת, מסננים מצלמה מותאמים אישית), עליך לכתוב קוד ספציפי פלטפורמה ב Java / Kotlin (אנדרואיד) או אובייקטיבי-C / Swift (iOS).זה דורש מומחיות התפתחותית.
- (FLT:0) Performance Bottlenecks:FLT:1) React Native מסתמכ על גשר בין JavaScript לבין חוטי ילידים.אנימציה מורכבים מאוד, גרפיקה בזמן אמת (כמו 3D משחקים), או עיבוד נתונים כבד יכול לגרום ל-Jack. עבור רוב היישומים העסקיים, הביצועים הוא הולם, אבל עבור משחקים או יישומים אינטנסיביים לשקול פלוטר או מקומי מלא.
- (FLT:0) גידול מורכב: FLT:1 בעוד הכלים debugging השתפרו, פתרון בעיות באגים ספציפיים פלטפורמה יכול להיות מסובך. בעיות עלולות להתרחש רק על מכשירים מסוימים אנדרואיד או גרסאות iOS.התגובה הקהילה וכלים כמו Flipper עזרה, אבל החוויה debugging אינה חלקה כמו פיתוח Native.
- (FLT:0) קונסוליות: 1FLT משום שכל פלטפורמה הופכת רכיבים שונים (למשל, FLT:39:39 יש הופעות שונות ב- iOS ו- Android), ייתכן שיהיה עליך לכתוב סגנונות ספציפיים פלטפורמה או רכיבים.The FLT:40 מסייע לזהות את מערכת ההפעלה, אך שמירה על עיצוב מושלם פיקסל אמיתי בשני הפלטפורמות יכול להיות זמן-conuming.
- (FLT:0Size של האפליקציה:FLT:1rea יישומים Native נוטים להיות גדולים יותר מאשר יישומים מקומיים מלאים בשל הכללה של מנוע JavaScript (Hermes או JavaScriptCore) בגודל הממוצע הוא 10-20 MB יותר מאשר המקבילה של הילידים.
נושאים מתקדמים: כאשר אתה צריך עוד
היכרות עם מודולים Native
כדי לגשר על הפער כאשר ספריית JavaScript אינה קיימת, באפשרותך לכתוב מודול יליד.לדוגמה, להשתמש חיישן חומרה שלא נתמך על ידי חבילה קהילתית:
- באנדרואיד: ליצור שיעור Java המשתרע על ידי FLT:41 ולהרשם אותו עם החבילה.
- ב- iOS: צור שיעור Swift/ObjC אשר מיישם את הפרוטוקול (FLT:42).
- שם הסרטון: Javascript: FLT:43
אסטרטגיות אופטימיזציה
- (ב) ⁇ (ב) ⁇ (ב) ⁇ (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) [15] ,"ה' (ב"ד)" (ב"ב)"ב"ה, "ה')" (ב"ב)"ב[[1924]], [[1924]], [[1924]]]]]], [[1924]]]]]]]]
- (ב) ויקרא י"א: ויקרא י"ד: "וַיֹּאמֶר עַמֶר עַל עַל הָאָרֶץ" (בראשית כ"ד, כ"ד)
- (ב) ,0) , בין היתר: 1:1 , Defer כבד חישובים עד לאחר השלמת ההנפשות או המעברים.
- (ב) (ב) ,0) נהג לאנימציה: (FLT:1) השתמש (FLT:50:50 כאשר מאמת תכונות שאינן עיכובים (opacity, changed) זה מנקה אנימציה לחוט הילידים.
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
בדיקת האפליקציה שלך
תגובה אינדיאנית תומכת באסטרטגיות בדיקה שונות:
- (ב) ,0) בדיקות: ⁇ 1 (המכונה מראש) לשימוש Jest (pre-config) לבדיקת פונקציות טהורות ולוגיקה.
- (FLT:0) בדיקות אחראיות: 1FLT השתמש בספריית בדיקה של Native כדי להפוך רכיבים ובדיקת אינטראקציות משתמשים.
- (FLT:0) בדיקה סופית: FLT:1 Detox על ידי Wix הוא מסגרת בדיקות אפורה פופולרית E2E הפועלת על מכשירים אמיתיים וסימולטורים.זה מדמה פעולות משתמשים ואימות של מדינת UI.
המונחים: App Stores
לפני פריסה, ודא שיש לך בניין מוכן לייצור:
- אייקונים של האפליקציה ומסכים מתזים לשתי הפלטפורמות.
- הגדר את גרסת האפליקציה ובניית מספר בקובץ FLT:54 ו- Native config.
- עבור Android: ליצור קידוד חתום או AAB באמצעות חנות מפתח של Android Studio ולאחר מכן להעלות ל-Google Play Console.
- עבור iOS: הארכיון את האפליקציה ב- Xcode (מוצר > Archives), היכנס עם תעודת הפצה, והעלאה באמצעות Xcode או Transporter כדי App Store Connect.
- שקול באמצעות שירותי אינטגרציה רצופים כמו GitHub Actions או Bitrise to Automate Building and Sign.
דוגמאות אמיתיות ל- React Native Apps
- (FLT:0) Instagram (Explore Tab / Zusteau): אינסטגרם 1 משתמש ב- React Native עבור חלקים של האפליקציה שלה, כולל הכרטיסיה המפרקת ואפליקציית ה- Standalone Messengers.הם השיגו שיתוף קוד חוצה פלטפורמות תוך שמירה על תחושה של יליד.
- (FLT:0)Discord (Mobile): .FLT:1ibd של היישום הנייד של דיסקורד בנוי עם React Native.הם ניצלו את מנוע ה ⁇ לביצועים ושיתוף קוד בין אנדרואיד ל- iOS.
- (FLT:0)Walmart: 1FLT) ענקית הקמענית בנה מחדש את האפליקציה הניידת שלה באמצעות React Native, תוך השגת חוויות זהות כמעט בשתי הפלטפורמות וצמצום זמן הפיתוח.
- (FLT:0)Uber Eats (Restaurant Dashboardir): FLT 1 Uber Eats משתמש ב- React Native עבור לוח המחוונים הפונה למסעדה, המאפשרת השקיה מהירה ופריסת חוצה כוכבית.
מסקנה
React Native נותרה בחירה ראשונה לפיתוח סלולרי חוצה פלטפורמות בגלל האיזון שלה בין ביצועים, ניסיון מפתח, וכדאיות קוד.בעוד שיש לו מגבלות - במיוחד סביב יישומים גרפיים-רגישים מורכבות מודול Native - הוא מצטיין עבור רוב היישומים הניידים סטנדרטיים, ממסחר אלקטרוני ועד מדיה חברתית לכלים ארגוניים.
על ידי שליטה במושגים הליבה (שותפים, מדינה, ניווט, סטיילינג), מינוף מערכת האקולוגית הספרייה הנרחבת, ולאחר שיטות הטובות ביותר לביצועים ובדיקות, תוכל לספק יישומים איכותיים למשתמשי iOS ואנדרואיד עם בסיס קוד יחיד. השתמש ב- (קוד יחיד:0React NativeFLT:1 כנקודת ההתייחסות העיקרית שלך, ולחקור משאבי קהילה כמו LTF:2React for a Starteramtation) הוא רק עבור ספריות לוח זמנים.