Настройка окружения и архитектура приложения на Node.js и React
Настройка окружения и архитектура приложения на Node.js и React
Добро пожаловать в курс по Fullstack-разработке. В этой статье мы заложим фундамент вашего будущего приложения. Мы не просто установим программы, но и разберем, как именно взаимодействуют две ключевые технологии: Node.js на сервере и React на клиенте.
Архитектура Fullstack-приложения
Прежде чем писать код, важно понять, как устроена система. Fullstack-приложение на стеке MERN (MongoDB, Express, React, Node.js) или PERN (PostgreSQL) работает по клиент-серверной модели.
- Клиент (Frontend): Это ваше React-приложение. Оно работает в браузере пользователя. Его задача — отрисовать интерфейс и реагировать на действия пользователя (клики, ввод текста).
- Сервер (Backend): Это Node.js с фреймворком Express. Он работает на удаленном компьютере (или локально при разработке). Его задача — обрабатывать бизнес-логику, работать с базой данных и отправлять данные клиенту.
- API (Application Programming Interface): Это набор правил, по которым клиент и сервер общаются. Обычно они обмениваются данными в формате JSON.
Почему Node.js и React?
Главное преимущество этой связки — единый язык программирования. И фронтенд, и бэкенд пишутся на JavaScript. Это позволяет:
- Переиспользовать код (например, функции валидации данных).
- Использовать общий менеджер пакетов (npm).
- Легче переключаться между задачами сервера и клиента.
Установка и проверка Node.js
Основой всего окружения является Node.js. Это среда выполнения, которая позволяет запускать JavaScript вне браузера. Вместе с ней устанавливается npm (Node Package Manager) — инструмент для управления библиотеками.
Шаг 1: Установка
Перейдите на официальный сайт nodejs.org и скачайте версию LTS (Long Term Support). Это наиболее стабильная версия, рекомендуемая для большинства проектов.
Шаг 2: Проверка версий
После установки откройте терминал (Command Prompt, PowerShell или Terminal на macOS) и введите следующие команды:
node -v
npm -v
Вы должны увидеть номера версий, например v20.11.0 и 10.2.4. Если вы видите ошибки, попробуйте перезагрузить компьютер или переустановить Node.js.
Структура проекта
Для учебного проекта мы будем использовать простую и понятную структуру, разделяющую код клиента и сервера. Создайте главную папку для вашего проекта, например my-fullstack-app.
Внутри неё мы создадим две подпапки:
client— здесь будет жить React.server— здесь будет жить Node.js API.
Такой подход называется монорепозиторием (в упрощенном виде), так как весь код хранится в одном месте.
Настройка серверной части (Node.js + Express)
Начнем с бэкенда, так как он будет поставлять данные.
-
Откройте терминал и перейдите в папку проекта:
mkdir server cd server -
Инициализируйте проект. Флаг
-yавтоматически ответит «да» на все вопросы конфигурации:npm init -yВ папке появится файл
package.json— паспорт вашего проекта, где хранятся список зависимостей и скрипты запуска. -
Установите Express — минималистичный веб-фреймворк для Node.js:
npm install express
Создание базового сервера
Создайте в папке server файл index.js и добавьте следующий код:
const express = require('express');
const app = express();
const PORT = 5000;
// Базовый маршрут (endpoint)
app.get('/api/hello', (req, res) => {
res.json({ message: 'Привет от сервера Node.js!' });
});
app.listen(PORT, () => {
console.log(`Сервер запущен на порту ${PORT}`);
});
Запустите сервер командой node index.js. В консоли вы увидите сообщение о запуске.
Настройка клиентской части (React)
Теперь настроим фронтенд. Раньше стандартом был Create React App, но сейчас индустрия перешла на Vite — он значительно быстрее и современнее.
- Вернитесь в корень проекта и создайте папку клиента:
cd .. npm create vite@latest client -- --template react - Перейдите в папку и установите зависимости:
cd client npm install - Запустите React-приложение:
npm run dev
Теперь у вас запущены два процесса: сервер на порту 5000 и клиент (обычно на порту 5173).
Связывание клиента и сервера (CORS)
Если вы попробуете сделать запрос с React (порт 5173) на Node.js (порт 5000), браузер заблокирует его из-за политики безопасности. Это называется CORS (Cross-Origin Resource Sharing).
Чтобы разрешить браузеру получать данные с другого порта, нужно настроить сервер.
- В папке
serverостановите сервер (Ctrl+C) и установите пакетcors:npm install cors - Обновите
server/index.js:
const express = require('express');
const cors = require('cors'); // Импорт cors
const app = express();
app.use(cors()); // Разрешаем запросы с других доменов/портов
// ... остальной код ...
Теперь React сможет свободно получать данные от вашего API.
Оценка производительности (Теория)
При проектировании архитектуры важно понимать, как данные передаются по сети. Одним из ключевых показателей является время загрузки данных. Рассмотрим упрощенную формулу расчета времени загрузки ресурса (например, JSON-ответа или JS-бандла):
где — общее время загрузки (секунды), — размер передаваемых данных (биты), — пропускная способность канала (биты в секунду), — задержка сети (latency, секунды).
Пример: Если ваш API возвращает JSON размером 50 Кб ( бит), скорость интернета пользователя 10 Мбит/с ( бит/с), а пинг (задержка) составляет 50 мс (0.05 с), то:
Это показывает, что даже при быстром интернете задержка () играет огромную роль. Именно поэтому в архитектуре Node.js мы стараемся минимизировать количество запросов и объем передаваемых данных.
Итоги
Мы успешно подготовили рабочее место для Fullstack-разработки. Вот ключевые моменты:
- Архитектура: React отвечает за интерфейс, Node.js — за логику и данные.
- Окружение: Node.js и npm необходимы для запуска и управления зависимостями.
- Структура: Разделение на
clientиserverупрощает поддержку кода. - Связь: Для взаимодействия между портами (5173 и 5000) необходима настройка CORS на сервере.
- Инструменты: Vite — современный стандарт для сборки React-приложений.