Вопрос проверяет понимание механизма изоляции стилей в CSS-модулях и их роли в предотвращении конфликтов имён классов в крупных проектах.
CSS-модули — это подход, при котором стили компонента изолируются на уровне сборки. Основная проблема, которую они решают — глобальное пространство имён CSS, где два одинаковых класса из разных файлов могут конфликтовать. CSS-модули автоматически генерируют уникальные имена классов, добавляя к ним хеш или другой идентификатор, что исключает коллизии.
На этапе сборки (например, с помощью Webpack и css-loader) каждый CSS-файл обрабатывается как модуль. Все имена классов в нём преобразуются в уникальные строки, а в JavaScript-коде импортируются как объект, где ключ — исходное имя, а значение — сгенерированное. Это позволяет использовать короткие имена в разработке, но гарантирует уникальность в рантайме.
// styles.module.css
.button {
background: blue;
color: white;
}
// Component.jsx
import styles from './styles.module.css';
function Button() {
return <button className={styles.button}>Click me</button>;
}
// В браузере класс будет выглядеть как "_button_1a2b3"CSS-модули стоит применять в любом современном веб-проекте, где используется компонентный подход. Они обеспечивают предсказуемость стилей, упрощают рефакторинг и устраняют головную боль от глобальных CSS-конфликтов, особенно в командах.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию