Какие знаешь способы убрать дублирование логики между сервером и клиентом

«Какие знаешь способы убрать дублирование логики между сервером и клиентом» — вопрос из категории Архитектура, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Один из способов — использовать общий код через монорепозиторий или npm-пакеты. Например, валидацию форм можно вынести в отдельный модуль и импортировать на клиенте и сервере.

// shared/validators.js
export const validateEmail = (email) => /^[^s@]+@[^s@]+.[^s@]+$/.test(email);

GraphQL — другой подход, где сервер описывает схему данных, а клиент запрашивает только нужные поля, уменьшая дублирование логики выборки.

Isomorphic/Universal JavaScript позволяет выполнять один код и на сервере (Node.js), и на клиенте. Например, рендеринг React-компонентов:

// server.js
import App from './App';
const html = ReactDOMServer.renderToString(<App />);

Конфигурация через API — сервер предоставляет клиенту настройки (например, feature flags), избегая хардкода.