Spec-Zone.ru › React 18

Начало нового проекта React

Если вы хотите создать новое приложение или веб-сайт полностью с использованием React, мы рекомендуем выбрать один из популярных в сообществе фреймворков на базе React.

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

Начав с фреймворка, вы сможете быстро начать работу с React и избежать необходимости создания собственного фреймворка в дальнейшем.

Подробное изучение

Можно ли использовать React без фреймворка?

Вы определённо можете использовать React без фреймворка — именно так вы бы использовали React для части вашей существующей страницы. Однако, если вы создаёте новое приложение или сайт полностью с React, мы рекомендуем использовать фреймворк.

Вот почему.

Даже если вам не нужна маршрутизация или загрузка данных с самого начала, вы, вероятно, захотите добавить некоторые библиотеки для них. По мере роста вашего JavaScript-пакета с каждой новой функцией, вам, возможно, придётся разобраться, как разделить код для каждого маршрута индивидуально. По мере усложнения ваших потребностей в получении данных, вы, скорее всего, столкнётесь с ситуацией, когда сервер-клиентские сетевые операции будут сильно замедлять ваше приложение. По мере увеличения количества пользователей с плохим подключением к сети и устаревшими устройствами, вам может потребоваться генерировать HTML из ваших компонентов для ранней отображения содержимого — либо на сервере, либо во время сборки. Изменение вашей настройки для выполнения части вашего кода на сервере или во время сборки может быть очень сложным.

Эти проблемы не специфичны для React. Вот почему у Svelte есть SvelteKit, у Vue — Nuxt и так далее. Чтобы самостоятельно решить эти проблемы, вам нужно будет интегрировать ваш сборщик с вашим маршрутизатором и вашей библиотекой для загрузки данных. Несложно создать начальную настройку, но в реализации приложения, которое быстро загружается, даже по мере его роста, есть много нюансов. Вы захотите отправлять минимальное количество кода приложения, но сделать это за один клиентско-серверный обмен, параллельно с любыми данными, необходимыми для страницы. Вы, скорее всего, захотите, чтобы страница была интерактивной до запуска вашего JavaScript-кода, чтобы поддерживать поэтапное улучшение. Возможно, вы захотите сгенерировать папку с полными статическими HTML-файлами для своих маркетинговых страниц, которые могут быть размещены где угодно и по-прежнему работать при отключённом JavaScript. Самостоятельное создание этих возможностей требует значительных усилий.

Фреймворки React на этой странице решают подобные проблемы по умолчанию, без дополнительных усилий с вашей стороны. Они позволяют вам начать с минимальными настройками и затем масштабировать приложение по мере необходимости. Каждый фреймворк React имеет сообщество, поэтому поиск ответов на вопросы и обновление инструментов проще. Фреймворки также обеспечивают структуру для вашего кода, помогая вам и другим сохранять контекст и навыки между различными проектами. Напротив, с пользовательской настройкой легче застрять на неподдерживаемых версиях зависимостей, и вы, по сути, создадите свой собственный фреймворк — пусть даже без сообщества или пути обновления (и если он будет похож на те, что мы делали в прошлом, то он будет разработан менее тщательно).

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

Фреймворки React для производства

Эти фреймворки поддерживают все необходимые функции для развертывания и масштабирования вашего приложения в производстве и стремятся поддерживать нашу концепцию архитектуры полного стека. Все рекомендуемые фреймворки — это открытый исходный код с активными сообществами для поддержки и могут быть развернуты на вашем собственном сервере или у провайдера хостинга. Если вы автор фреймворка, заинтересованный в добавлении в этот список, пожалуйста, сообщите нам.

Next.js

Маршрутизатор страниц Next.js — это фреймворк React для полного стека. Он универсален и позволяет создавать приложения React любого размера — от преимущественно статического блога до сложного динамического приложения. Для создания нового проекта Next.js выполните в терминале:

Терминал
npx create-next-app@latest

Если вы новичок в Next.js, ознакомьтесь с курсом по Next.js.

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

Remix

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

Терминал
npx create-remix

Если вы новичок в Remix, ознакомьтесь с кратким учебным пособием по блогу и более подробным учебным пособием по приложению.

Remix поддерживается компанией Shopify. При создании проекта Remix вам необходимо выбрать целевую среду развертывания. Вы можете развернуть приложение Remix на любом хостинге Node.js или serverless, используя или написав адаптер.

Gatsby

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

Терминал
npx create-gatsby

Если вы новичок в Gatsby, ознакомьтесь с учебным пособием по Gatsby.

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

Expo (для нативных приложений)

Expo — это фреймворк React, который позволяет создавать универсальные приложения для Android, iOS и веб-платформ с истинно нативными пользовательскими интерфейсами. Он предоставляет SDK для React Native, что упрощает использование нативных компонентов. Для создания нового проекта Expo выполните:

Терминал
npx create-expo-app

Если вы новичок в Expo, ознакомьтесь с учебным пособием по Expo.

Expo поддерживается компанией Expo (компания). Создание приложений с Expo бесплатное, и вы можете отправлять их в магазины приложений Google и Apple без ограничений. Expo также предоставляет платные облачные сервисы (по подписке).

Экспериментальные фреймворки React

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

Эти функции ежедневно приближаются к производственной готовности, и мы ведём переговоры с другими разработчиками сборщиков и фреймворков об их интеграции. Мы надеемся, что через год или два все фреймворки, перечисленные на этой странице, будут полностью поддерживать эти функции. (Если вы автор фреймворка, заинтересованный в сотрудничестве с нами для экспериментов с этими функциями, пожалуйста, сообщите нам!)

Next.js (Маршрутизатор приложений)

Маршрутизатор приложений Next.js — это переработка API Next.js, направленная на реализацию концепции архитектуры полного стека React. Он позволяет извлекать данные в асинхронных компонентах, работающих на сервере или даже во время сборки.

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

Подробное изучение

Какие особенности составляют видение архитектуры полностековой React-команды?

Компонента маршрутизации приложения Next.js полностью реализует официальную спецификацию React Server Components. Это позволяет вам смешивать компоненты, обрабатываемые на этапе сборки, на стороне сервера и интерактивные компоненты в одном дереве React.

Например, вы можете написать серверный React-компонент в виде 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 также интегрирует получение данных с помощью Suspense. Это позволяет вам задать состояние загрузки (например, шаблон-заглушку) для различных частей вашего пользовательского интерфейса непосредственно в дереве React:

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

Серверные компоненты и Suspense — это функции React, а не Next.js. Однако их внедрение на уровне фреймворка требует согласия и непростой работы по реализации. В настоящее время компонента маршрутизации приложения Next.js является наиболее полной реализацией. Команда React работает с разработчиками инструментов сборки, чтобы сделать эти функции проще реализовать в следующем поколении фреймворков.

© 2013–present Facebook Inc.
Licensed under the Creative Commons Attribution 4.0 International Public License.
https://18.react.dev/learn/start-a-new-react-project

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API