Атрибут nomodule тега <script>
Описание
Атрибут nomodule указывает браузеру, что скрипт должен выполняться только в браузерах, не поддерживающих модули ES6 (ECMAScript 2015). Это полезно для предоставления альтернативной версии кода старым браузерам.
<!-- Современные браузеры -->
<script type="module" src="modern.js"></script>
<!-- Только старые браузеры -->
<script nomodule src="legacy.js"></script>
Ключевые особенности:
| Характеристика | Описание |
|---|---|
| Назначение | Полифил для старых браузеров |
| Поддержка | Игнорируется браузерами с поддержкой ES-модулей |
| Использование | Всегда в паре с type="module" |
Практическое применение:
Типичный сценарий использования:
- Современный код в модуле (modern.js)
- Транспилированная версия для старых браузеров (legacy.js)
- Браузер сам выбирает подходящую версию
Поддержка браузеров:
- Поддерживается: IE11, старые версии Safari
- Игнорируется: Chrome 61+, Firefox 60+, Edge 16+
- Не заменяет полноценное определение возможностей браузера
Рекомендации:
- Используйте для graceful degradation
- Комбинируйте с системой сборки (Webpack, Rollup)
- Тестируйте в целевых браузерах
- Не используйте для критического функционала
Примечание: В современных проектах рекомендуется использовать связку:
type="module"- для современных браузеровnomodule- как fallback для старых версий- Современные инструменты сборки автоматически генерируют оба варианта