Skip to main content

Клієнтський VS серверний роутинг

Коротко:

КритерійСерверний роутинг (Server-side routing)Клієнтський роутинг (Client-side routing)
Де відбувається обробка маршрутуНа серверіУ браузері (на клієнті)
Що відбувається при переході на іншу сторінкуВідправляється новий HTTP-запит до сервера -> приходить новий HTMLURL змінюється, але сторінка не перезавантажується - React сам оновлює потрібний компонент
Кількість завантажуваних HTML-сторінокДля кожного маршруту - своя сторінкаОдна сторінка (index.html) для всіх маршрутів
Швидкість переходівПовільніше (щоразу запит на сервер)Миттєві (все вже завантажено в браузері)
SEO (пошукова оптимізація)Відмінна - контент доступний одразуПроблеми без SSR (пошуковик бачить порожній <div id="root">)
Керування станомКожен перехід створює новий стан сторінкиСтан React-застосунку зберігається між переходами
ПрикладКласичний сайт на PHP, Django, RailsReact SPA з react-router-dom

Приклад, щоб зрозуміти різницю

Серверний роутинг (класичний сайт)

javascript
Користувач -> натискає "Про нас" Браузер надсилає запит GET /about Сервер повертає HTML-сторінку about.html Браузер повністю перезавантажує сторінку

Кожна сторінка - окремий запит і окремий HTML.


Клієнтський роутинг (React SPA)

javascript
Користувач -> натискає "Про нас" React Router змінює URL на /about React рендерить компонент <About /> без запиту до сервера Сторінка не перезавантажується

Загалом один HTML (index.html), а все перемикання сторінок відбувається всередині React-застосунку.


Приклад різниці в коді

Серверний роутинг (наприклад, в Express):

javascript
app.get('/about', (req, res) => { res.sendFile(__dirname + '/about.html'); });

Клієнтський роутинг (React Router):

javascript
<Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> </Routes>

Технічні відмінності

АспектСервернийКлієнтський
Обробка URLСервер аналізує шлях /about і вирішує, що повернутиJS у браузері перехоплює навігацію і вирішує, який компонент відобразити
Запит до сервераКожен перехід = новий запитТільки один запит при завантаженні застосунку
Історія браузераКерується серверомКерується через History API (pushState, replaceState)
Помилки 404Налаштовуються на серверіМають оброблятися в клієнтському роутері (<Route path="*">)

Комбінований підхід

Багато сучасних фреймворків (наприклад, Next.js, Remix) використовують гібрид:

  • Сервер рендерить першу сторінку (SSR) -> для SEO і швидкого першого завантаження.
  • Подальші переходи виконуються на клієнті (SPA-routing).

Це дає найкраще з обох світів - швидку навігацію і хороше SEO.


Підсумок:

Серверний роутинг - сервер вирішує, що віддати користувачу при кожному переході. Клієнтський роутинг - браузер сам керує навігацією, не звертаючись до сервера за новим HTML.

React використовує клієнтський роутинг, а SSR-фреймворки на кшталт Next.js - гібрид (серверний + клієнтський).

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.