Проверяет умение архитектурно разделять UI-слои для desktop и mobile при общих сервисах и бизнес-логике.
Когда desktop и mobile версии имеют разные наборы компонентов, но общие сервисы, важно не смешивать эти слои. Бизнес-логика, работа с API, состояние и утилиты должны находиться в общем ядре, а компоненты — в отдельных модулях представления. Тогда переключение сводится к выбору нужного набора компонентов, а не к копированию логики.
// shared/services/userService.ts
export const userService = { fetchUser: () => api.get('/user') };
// desktop/UserCard.tsx
export const UserCard = () => { /* desktop UI */ };
// mobile/UserCard.tsx
export const UserCard = () => { /* mobile UI */ };
// App.tsx
import { userService } from './shared/services/userService';
import { UserCard as DesktopCard } from './desktop/UserCard';
import { UserCard as MobileCard } from './mobile/UserCard';
const isMobile = window.matchMedia('(max-width: 768px)').matches;
const UserCard = isMobile ? MobileCard : DesktopCard;
export const App = () => {
const [user, setUser] = useState(null);
useEffect(() => { userService.fetchUser().then(setUser); }, []);
return user ? <UserCard user={user} /> : null;
};Платформу можно определять по user-agent, по media queries, по отдельному флагу в конфиге сборки или по разным URL. Для SSR важно учитывать, что на сервере нет window, поэтому решение о платформе лучше принимать на клиенте или через заголовки запроса.
Такой подход полезен в продуктах с разными интерфейсами под устройства, где важна единая логика и минимум дублирования. Он упрощает тестирование, поддержку и постепенную миграцию между платформами.
Уровень
Рейтинг:
4
Сложность:
6
Навыки
JavaScript
React
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию