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

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

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

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

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 фрэймворкі, гатовыя для выкарыстання ў працоўным асяроддзі

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

Next.js

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

Terminal
npx create-next-app@latest

Для знаёмства з 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 прапануе платныя воблачныя паслугі.

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

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

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

Next.js (App Router)

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

Next.js падтрымліваецца Vercel. Вы можаце разгарнуць Next.js праграму на любым Node.js або бессерверным хостынгу, або на вашым уласным серверы. 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 працуе разам з распрацоўшчыкамі зборшчыкаў, каб палегчыць рэалізацыю гэтых функцый у фрэймворках наступнага пакалення.