התחלת פרויקט React חדש

אם אתם רוצים לבנות אפליקציה חדשה או אתר חדש שמבוססים על React, אנחנו ממליצים לבחור אחד מה-frameworks הפופולריים שמונעים על ידי React.

אפשר להשתמש ב-React גם בלי מסגרת, אבל ראינו שרוב האפליקציות והאתרים בסוף בונים פתרונות לבעיות נפוצות כמו פיצול קוד, ניתוב, שליפת נתונים ויצירת HTML. אלה בעיות משותפות לכל ספריות ה-UI, לא רק ל-React.

אם מתחילים עם מסגרת אפשר להתחיל לעבוד מהר עם React, ולהימנע מstate שבו אנו תבנו מסגרת משלכם בהמשך.

Deep Dive

האם אפשר להשתמש ב-React בלי framework?

אפשר להשתמש ב-React בלי framework, כך בדיוק משתמשים ב-React רק עבור חלק מהעמוד. **אבל אם אתם בונים אפליקציה חדשה או אתר חדש ב-React, בהחלט אנחנו ממליצים להשתמש ב-

הנה למה.

גם אם בהתחלה לא צריך ניתוב או שליפת נתונים, סביר שבהמשך תרצו להוסיף ספריות לכך. ככל שחבילת ה-JavaScript שלכם תגדל עם כל יכולת חדשה, אפשר שתצטרכו להבין איך לפצל קוד לכל מסלול בנפרד. שצורכי שליפת מסתכלים, סביר שתיתקלו ב-waterfalls של רשת בין שרת ללקוח שיגרמו לאפליקציה להרגיש איטית מאוד. ככל שהקהל יכלול יותר משתמשים עם חלשה ומכשירים חלשים, אפשר שתצטרכו רשת HTML מהקומפוננט כדי להציג תוכן מוקדם, בשרת או בזמן לבנות. שינוי ה-setup כך שחלק מהקוד ירוץ בשרת או בזמן לבנות יכול להיות מורכב מאוד.

הבעיות האלה לא ייחודיות ל-React. לכן ל-Svelte יש SvelteKit, ל-Vue יש Nuxt וכן הלאה. כדי לפתור זאת לבד, תצטרכו לשלב בין הבאנדלר לראוטר ולספריית שליפת הארגון. לא קשה להגיע להתקנה ראשוני שעובד, אבל יש הרבה ניואנסים ביצירת אפליקציה שננתה מהר גם כשהיא גדלה לאורך זמן. תרצו לשלוח את הפעולות הנכנסות לקוד האפליקציה, אבל זאת בסבב לקוח-שרת אחד ובמקביל לכל הדרושים. כנראה תרצו שהעמוד יהיה אינטראקטיבי עוד לפני שה-JavaScript רץ בפועל, כדי לתמוך בשיפור מתקדם. אפשר לאחסן בכל מקום ועד יעבדו גם כש-JavaScript כבוי. בנייה עצמית של היכולות האלה דורשת עבודה אמיתית.

ה-frameworks של React בעמוד הזה פותרים בעיות כאלה כברירת מחדל, בלי עבודה נוספת מצדכם. הם יכולים להתחיל בצורה רזה מאוד ואז להגדיל את האפליקציה לפי הצורך. לכל מסגרת יש קהילה, יש קל יותר תשובות ולשדרג כלי עבודה. frameworks גם נותנים מבנה לקוד ועוזרים לכם לשמור על הקשר וידע בין פרויקטים שונים. לעומת זאת, ב-setup מותאם אישית קל יותר להיתקע על גרסאות תלויות לא נתמכות, ובפועל תמצאו את עצמכם בונים מסגרת משלכם, רק בלי קהילה ובלי נתיב שדרוג (ואם זה כמו הדברים שאנחנו בנינו בעבר, גם פחות מסודר).

אם לאפליקציה שלכם יש אילוצים חריגים שה-frameworks האלה לא משרתים טוב, או שאתם מעדיפים לפתור את הכול בעצמכם, אפשר לבנות הגדרה אישית עם React. קחו react ו-react-dom מ-npm, הגדירו בתהליך לבנות עם bundler כמו Vite או Parcel, והוסיפו כלים נוספים עבור ניתוב, יצירה סטטית, רינדור צד שרת ועוד.

React frameworks ברמת פרודקשן

ה-frameworks האלה תומכים בכל היכולות שצריך לפרוס ולהגדיל אפליקציה בפרודקשן, ופועלים לקראת תמיכה ב-חזון ארכיטקטורת ה-full-stack שלנו. כל ה-frameworks הם ממליצים אותם הם קוד פתוח עם פעילות קהילות לתמיכה, אוניות לפריסה על השרת שלכם או אצל ספק אירוח. אם אתם מחברי framework ורוצים להיכלל ברשימה הזו, ספרו לנו.

Next.js

נתב דפי Next.js הוא React framework מלא. הוא גמיש ומאפשר לבנות אפליקציות React בכל גודל, מבלוג סטטי ברובו ועד אפליקציה דינמית מורכבת. כדי ליצור פרויקט Next.js חדש, הריצו בטרמינל:

Terminal
npx create-next-app@latest

אם אתם חדשים ב-Next.js, מומלץ לעבור על קורס הלימוד של Next.js.

Next.js מתוחזק על ידי Vercel. אפשר לפרוס אפליקציית Next.js לכל אירוח Node.js או serverless, או לשרת משלכם. Next.js תומך גם ב-ייצוא סטטי שלא דורש שרת.

רמיקס

Remix הוא React framework מלא עם ניתוב מקונן. הוא יכול לפרק את האפליקציה לחלקים מקוננים לטעון נתונים גובה תגובה ולהתרענן בת לפעולות משתמש. כדי ליצור פרויקט Remix חדש, הריצו:

Terminal
npx ליצור-רמיקס

אם אתם חדשים ב-Remix, מומלץ לעבור על מדריך ה-blog (קצר) ועל מדריך ה-app (ארוך).

רמיקס מתוחזק על ידי Shopify. כשיוצרים פרויקט Remix צריך לבחור יעד פריסה. אפשר לפרוס אפליקציית Remix לכל אירוח Node.js או serverless באמצעות adapter קיים או כזה שתכתבו בעצמכם.

גטסבי

Gatsby הוא React framework לאתרים מהירים שמבוססי CMS. אקו-סיסטם התוספים העשיר ושכבת מבוסס GraphQL שלו מפשטים שילוב תוכן, APIs ושירותים שונים לאתר. כדי ליצור פרויקט Gatsby חדש, הריצו:

Terminal
npx create-gatsby

אם אתם חדשים ב-Gatsby, בדקו את מדריך גטסבי.

גטסבי מתוחזק על ידי Netlify. אפשר לפרוס אתר Gatsby סטטי לחלוטין לכל אירוח סטטי. אם אתם משתמשים ביכולות שמוגבלות לשרת, ודאו שספק תומך עבור גטסבי.

Expo (לאפליקציות native)

Expo הוא React framework שמאפשר ליצור אפליקציות אוניברסליות ל-Android, iOS והווב עם ממשק משתמש מקורי אמיתי. הוא מספק SDK עבור React Native שמקל שימוש בחלקים ה-native. כדי ליצור פרויקט Expo חדש, הריצו:

Terminal
npx create-expo-app

אם אתם חדשים ב-Expo, בדקו את מדריך Expo.

Expo מתוחזק על ידי Expo (החברה). בניית אפליקציות עם Expo היא ללא עלות, ואפשר לשלוח אותן לחנויות האפליקציות של Google ו-Apple ללא מגבלות. Expo מספקת גם שירותי ענן בתשלום כאפשרות להצטרף.

React frameworks בחזית הטכנולוגיה

כשהמשכנו לבחון איך לשפר את React, ההזדמנות שלנו להשפעה הגדולה ביותר היא אינטגרציה הדוקה יותר בין React ל-frameworks, במיוחד בניתוב, חיבור וטכנולוגיות שרת. צוות Next.js הסכים משתפים איתנו פעולה במחקר, פיתוח, אינטגרציה ובדיקות של יכולות React מתקדמות שאינן תלויות framework, כמו React Server Components.

היכולות האלו מתקרבות כל יום למוכנות לפרודקשן, ואנחנו בשיחות גם עם מפתחי bundlers ו-frameworks נוספים כדי לשלב אותם. התקווה היא שלנו שבתוך שנה או שנתיים כל ה-frameworks שמופיעים בעמוד הזה יתמכו בצורה מלאה. (אם אתם מחברי מסגרת וסיוע איתנו פעולות בניסויים האלה, ספרו לנו.)

Next.js (נתב אפליקציות)

נתב האפליקציות של Next.js הוא עיצוב מחדש של ממשקי API ב-Next.js שמטרתו לממש את חזון ארכיטקטורת ה-full-stack של צוות React. הוא יכול לשלוט בנתונים בקומפוננטות אסינרוניות שרצות בשרת או אפילו בזמן לבנות.

Next.js מתוחזק על ידי Vercel. אפשר לפרוס אפליקציית Next.js לכל אירוח Node.js או serverless, או לשרת משלכם. Next.js תומך גם ב-ייצוא סטטי שלא דורש שרת.

Deep Dive

אולי ירצו את חזון ארכיטקטורת ה-full-stack של צוות להגיב?

ה-bundler של Next.js App Router ממש ממש מלא את מפרט React Server Components הרשמי. זה יכול לשלב בעץ תגובה אחת קומפוננטות של זמן לבנות, קומפוננטות שרת בלבד וקומפוננטות אינטראקטיביות.

לדוגמה, אפשר לכתוב קומפוננטת תגובה בצד שרת כפונקציית async שקוראת ממסד נתונים או מקובץ. אחר כך אפשר להעביר דרך נתונים לקומפוננטות אינטראקטיביות:

// This component runs *only* on the server (or during the build).
async function Talks({ confId }) {
// 1. You're on the server, so you can talk to your data layer. API endpoint not required.
const talks = await db.Talks.findAll({ confId });

// 2. Add any amount of rendering logic. It won't make your JavaScript bundle larger.
const videos = talks.map(talk => talk.video);

// 3. Pass the data down to the components that will run in the browser.
return <SearchableVideoList videos={videos} />;
}

Next.js App Router משלב גם משיפי נתונים עם מתח. כך אפשר להגדיר מצב טעינה (כמו מציין מיקום שלד) עבור חלקים שונים ב-UI מבוסס בעץ תגובה:

<Suspense fallback={<TalksLoading />}>
<Talks confId={conf.id} />
</Suspense>

רכיבי שרת ו-Suspense יכולים להיות של React ולא של Next.js. עם זאת, אימוץ שלהן ברמת המסגרת דורשת מחויבות ועבודת מימוש לא טריאלית. כרגע Next.js App Router הוא המימוש השלם ביותר. צוות תגיב עובד עם מפתחי bundlers כדי להקל על מימוש היכולות האלה בדור הבא של מסגרות.