Cover Image for module & nomodule – загрузка JavaScript для современных браузеров и поддержка старых

module & nomodule – загрузка JavaScript для современных браузеров и поддержка старых

10 июля 2020 

Рассмотрим паттерн module/nomodule, который позволяет разделить загрузку скриптов для старых и новых браузеров.

Разделение скриптов JS таким образом позволяет автоматически загружать отдельный бандл в современных браузерах, а в IE11 и других устаревших браузерах – бандл для IE11.

Короткий и простой пример:

<script type="module" src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js"></script>
<script nomodule src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine-ie11.min.js" defer></script>

К сожалению, не всё так просто. Показанный выше подход на основе HTML инициирует перезагрузку скриптов в Edge и Safari.

Более детальные варианты решения задачи есть тут https://habr.com/ru/company/raiffeisenbank/blog/473994/