Пачаць новы React праект

Калі вы хочаце стварыць новую праграму або новы вэб-сайт цалкам на React, мы рэкамендуем выбраць адзін з фрэймворкаў на базе React, папулярных у супольнасці. Фрэймворкі забяспечваюць функцыі, якія патрэбны большасці праграм і сайтаў, уключаючы маршрутызацыю, выбарку даных і генерацыю HTML.

Note

Вам трэба ўсталяваць Node.js для лакальнага разгортвання. Вы можаце таксама выкарыстоўваць Node.js у вытворчасці, але гэта неабавязкова. Многія React фрэймворкі падтрымліваюць экспарт у статычны HTML/CSS/JS.

React фрэймворкі, гатовыя для выкарыстання ў працоўным асяроддзі

Next.js

Next.js — гэта ўніверсальны фулстэк React фрэймворк. З яго дапамогай вы можаце ствараць сайты любога памеру ад простага статычнага блога да складанага дынамічнага сайта. Каб стварыць новы Next.js праект, запусціце ў вашым тэрмінале:

Terminal
npx create-next-app

Для знаёмства з Next.js вы можаце азнаёміцца з іх падручнікам па Next.js.

Next.js падтрымліваецца Vercel. Вы можаце разгарнуць Next.js на любым бессерверным хостынгу, Node.js хостынгу або на вашым уласным серверы. Цалкам статычную праграму на Next.js можна разгарнуць на любым статычным хостынгу.

Remix

Remix — гэта фулстэк React фрэймворк з укладзенай маршрутызацыяй. Ён дазваляе разбіваць вашу праграму на ўкладзеныя часткі, якія могуць загружаць даныя паралельна і абнаўляць у адказ на дзеянні карыстальніка. Каб стварыць новы Remix праект, запусціце:

Terminal
npx create-remix

Для знаёмства з Remix вы можаце азнаёміцца з іх інструкцыямі па стварэнні блога (кароткая) і праграмы (доўгая).

Remix падтрымліваецца Shopify. Калі вы ствараеце Remix праект, вам трэба выбраць шаблон для разгортвання праграмы. Вы можаце разгарнуць Remix праграму на любым бессерверным хостынгу або Node.js хостынгу, выкарыстоўваючы або напісаўшы адаптар.

Gatsby

Gatsby — гэта React фрэймворк для стварэння хуткіх сайтаў з падтрымкай CMS. Багатая экасістэма плагінаў і слой даных GraphQL спрашчаюць інтэграцыю змесціва, API і сэрвісаў на адным вэб-сайце. Каб стварыць новы Gatsby праект, запусціце:

Terminal
npx create-gatsby

Для хуткага знаёмства з Gatsby, азнаёмцеся з яго інструкцыяй

Gatsby падтрымліваецца Netlify. Вы можаце разгарнуць цалкам статычны Gatsby сайт на любым статычным хостынгу. Калі вы жадаеце выкарыстоўваць толькі серверныя магчымасці Gatsby, пераканайцеся што ваш хостынг іх падтрымлівае.

Expo (для натыўных праграм)

Expo — гэта React фрэймворк, які дазваляе ствараць універсальныя праграмы для Android, iOS і вэб-праграмы з натыўным карыстальніцкім інтэрфейсам. Ён пастаўляецца разам з SDK для React Native, што палягчае распрацоўку натыўных частак. Каб стварыць новы Expo праект, запусціце:

Terminal
npx create-expo-app

Для знаёмства з Expo вы можаце азнаёміцца з іх інструкцыя Expo.

Expo падтрымліваецца Expo (кампанія). Вы можаце бясплатна ствараць праграмы з дапамогай Expo і дадаваць іх у крамы Google і Apple без абмежаванняў. Дадаткова Expo прапануе платныя воблачныя паслугі.

Deep Dive

Ці можна выкарыстоўваць React без фрэймворка?

React дакладна можна выкарыстоўваць без фрэймворка. Напрыклад, вы можаце выкарыстоўваць React толькі для пэўнай часткі старонкі. Аднак, калі вы ствараеце новую праграму або сайт цалкам з React, мы рэкамендуем выкарыстоўваць фрэймворк.

Вось чаму:

Нават калі спачатку вам не патрэбна маршрутызацыя або атрыманне даных, вы, верагодна, захочаце пазней дадаць некаторыя бібліятэкі для гэтага. С кожнай новай функцыяй памер вашага JavaScript кода будзе расці і вам давядзецца задумацца аб тым, як падзяляць код для розных маршрутаў. Па меры таго, як ваша праграма будзе атрымліваць усё больш даных, вы можаце сутыкнуцца з каскаднымі запытамі, якія запаволяць вашу праграму. Сярод вашых карыстальнікаў з’явяцца тыя, хто карыстаецца нізкахуткасным інтэрнэтам або старымі прыладамі, і вы захочаце генерыраваць HTML на серверы або падчас зборкі. Змяніць налады вялікага праекту так, каб запускаць код на серверы або падчас зборкі, можа аказацца складанай задачай.

Гэтыя праблемы не з’яўляюцца спецыфічнымі для React. Вось чаму ў Svelte ёсць SvelteKit, у Vue ёсць Nuxt і гэтак далей. Каб іх вырашыць, вам давядзецца інтэграваць ваш зборшчык з абранымі бібліятэкамі для маршрутызацыі і атрымання даных. Зрабіць першасную наладу і прымусіць усё гэта працаваць разам можа аказацца не так складана, але існуе шмат падводных камянёў аб якіх вам прыйдзецца даведацца, каб падтрымліваць прадукцыйнасць праграмы па меры яе росту. Вы захочаце адпраўляць як мага менш кода, але зрабіць гэта за адзін раўнд запытаў паміж кліентам і серверам, пры гэтым паралельна атрымліваючы неабходныя для старонкі даныя. Верагодна, вы захочаце, каб са старонка можна было працаваць яшчэ да запуску JavaScript кода, каб падтрымліваць прагрэсіўнае паляпшэнне. Магчыма, вам спатрэбіцца дадаць папку статычных HTML файлаў для маркетынгавых старонак, якія могуць працаваць з адключаным на старонцы Javascript. Самастойнае стварэнне і падтрымка ўсіх гэтых магчымасцей патрабуе вельмі вялікай і сур’ёзнай працы.

React фреймворкі на гэтай старонцы вырашаюць усе гэтыя праблемы і не патрабуюць ад вас дадатковых намаганняў. Вы можаце пачаць з малога і дадаваць неабходную функцыянальнасць па меры неабходнасці. Кожны React фрэймворк мае суполку, таму знаходзіць адказы на пытанні і абнаўляць інструменты з іх дапамогай прасцей. Акрамя таго, фрэймворкі дапамагаюць структураваць ваш код і робяць яго зразумелым для іншых распрацоўшчыкаў. Правільна і адваротнае, зрабіўшы ўласнае рашэнне, ёсць рызыка захраснуць на версіі залежнасці, якая ўжо не падтрымліваецца і ў выніку стварыць свой уласны фрэймворк без суполкі і развіцця (і, хутчэй за ўсё, ён акажацца спраектаваны горш за ўжо існуючыя рашэнні ад каманд, якія прысвяцілі гэтым праблемам вялікую колькасць часу).

Калі вы яшчэ не перакананыя, або ваша праграма мае незвычайныя абмежаванні, якія не абслугоўваюцца добра гэтымі фрэймворкамі, і вы хочаце запусціць сваю ўласную наладу, мы не можам вас спыніць — дзейнічайце! Вазьміце react і react-dom з npm, наладзьце свой уласны працэс зборкі з дапамогай зборшчыка, напрыклад Vite або Parcel, і па меры неабходнасці дадавайце іншыя інструменты для маршрутызацыі, статычнай генерацыі або візуалізацыі на баку сервера і далей.

Перадавыя React фрэймворкі

Калі мы разведалі, як працягваць React удасканальваць, мы зразумелі, што больш цесная інтэграцыя React з фрэймворкамі (у прыватнасці, з маршрутызацыяй, групаваннем і сервернымі тэхналогіямі) — гэта наша самая вялікая магчымасць дапамагчы React карыстальнікам ствараць лепшыя праграмы. Каманда Next.js пагадзілася супрацоўнічаць з намі ў даследаванні, распрацоўцы, інтэграцыі і тэсціраванні сучасных функцый React, якія не залежаць ад фрэймворка, такіх як серверныя кампаненты React.

Гэтыя функцыі з кожным днём набліжаюцца да вытворчасці, і мы вялі перамовы з іншымі распрацоўшчыкамі зборшчыкаў і фрэймворкаў аб іх інтэграцыі. Мы спадзяемся, праз год ці два ўсе фрэймворкі, пералічаныя на гэтай старонцы, будуць мець поўную падтрымку гэтых функцый. (Калі вы аўтар фрэймворка і зацікаўлены ў супрацоўніцтве з намі для эксперыментаў з гэтымі функцыямі, паведаміце нам аб гэтым!)

Next.js (App Router)

Next.js App Router — гэта абноўлены API Next.js, які адпавядае таму, як каманда React бачыць архітэктуру фулстэк-праграм сёння. Маршрутызатар дазваляе загружаць даныя ў асінхронных кампанентах на серверы або нават падчас зборкі.

Next.js падтрымліваецца Vercel. Вы можаце разгарнуць Next.js праграму на любым Node.js або бессерверным хостынгу, або на вашым уласным серверы. Next.js таксама падтрымлівае статычны экспарт, які не патрабуе сервера.

Pitfall

Next.js App Router у цяперашні час знаходзіцца ў бэта-версіі і пакуль не рэкамендуецца для вытворчасці (па стане на сакавік 2023 году). Каб паэксперыментаваць з ім у існуючым праекце Next.js, прытрымлівайцеся гэтага кіраўніцтва па паступовай міграцыі.

Deep Dive

Якія функцыі складаюць бачанне поўнай архітэктуры React каманды?

Зборшчык Next.js App Router цалкам рэалізуе афіцыйную спецыфікацыю серверных кампанентаў React. Гэта дазваляе змяшаць кампаненты часу зборкі, серверныя і інтэрактыўныя кампаненты ў адным дрэве React.

Напрыклад, вы можаце напісаць толькі серверны кампанент React як async функцыю, якая чытае з базы даных або з файла. Затым вы можаце перадаваць даныя з яго ў інтэрактыўныя кампаненты:

// Гэты кампанент працуе *толькі* на серверы (або падчас зборкі).
async function Talks({ confId }) {
// 1. Вы знаходзіцеся на серверы, таму можаце напрамую звярнуцца да вашай базы даных без запытаў да API.
const talks = await db.Talks.findAll({ confId });

// 2. Дадайце любую колькасць логікі рэндэрынгу. Гэта не павялічыць памер вашага JavaScript бандла.
const videos = talks.map(talk => talk.video);

// 3. Перадайце даныя кампанентам, якія будуць працаваць у браўзеры.
return <SearchableVideoList videos={videos} />;
}

Next.js App Router таксама падтрымлівае атрыманне даных з затрымкай (Suspense). Так вы можаце задаць стан розных частак вашай праграмы пры загрузцы (напрыклад, паказаць заглушкі) непасрэдна ў вашым дрэве React:

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

Серверныя кампаненты і затрымка (Suspense) — гэта хутчэй магчымасці React, чым Next.js. Аднак іх прыняцце на ўзроўні фрэймворка патрабуе згоды на гэта ад каманды распрацоўкі і нетрывіяльнай працы па рэалізацыі. На дадзены момант Next.js App Router з’яўляецца найбольш поўнай рэалізацыяй гэтых магчымасцей. Каманда React працуе разам з распрацоўшчыкамі зборшчыкаў, каб палегчыць рэалізацыю гэтых функцый у фрэймворках наступнага пакалення.