Import Maps — современный инструмент управления зависимостями в браузере, позволяющий указывать, как интерпретировать модули JavaScript при их импорте. Он возник как ответ на потребность упрощения управления модулями без необходимости использования сборщиков вроде Webpack или Rollup. Основная идея заключается в том, чтобы браузер напрямую знал, какие URL соответствуют определённым модулям.
Import Maps определяются через тег
<script type="importmap"> в HTML-документе.
Простейший пример:
<script type="importmap">
{
"imports": {
"lit": "https://cdn.jsdelivr.net/npm/lit@2.7.5/lit.min.js"
}
}
</script>
<script type="module">
import { html, css, LitElement } from "lit";
class MyComponent extends LitElement {
static styles = css`p { color: blue; }`;
render() {
return html`<p>Hello, Lit!</p>`;
}
}
customElements.define("my-component", MyComponent);
</script>
Ключевой момент: импорт lit теперь ссылается на
URL, указанный в import map. Браузер подставляет этот URL при
разрешении модуля.
Import Map состоит из двух блоков:
Пример использования scopes:
{
"imports": {
"lit/": "https://cdn.jsdelivr.net/npm/lit@2.7.5/"
},
"scopes": {
"/admin/": {
"lit/": "/local_modules/lit/"
}
}
}
В данном примере для путей, начинающихся с /admin/,
используется локальная версия Lit, а для остальных — версия с CDN.
Lit как современный фреймворк тесно связан с модулями ES и import maps. Пример интеграции:
<script type="importmap">
{
"imports": {
"lit": "https://cdn.jsdelivr.net/npm/lit@2.7.5/lit.js",
"lit/decorators.js": "https://cdn.jsdelivr.net/npm/lit@2.7.5/decorators.js"
}
}
</script>
<script type="module">
import { LitElement, html } from "lit";
import { customElement, property } from "lit/decorators.js";
@customElement('user-card')
class UserCard extends LitElement {
@property({ type: String }) name = 'Guest';
render() {
return html`<p>Привет, ${this.name}</p>`;
}
}
</script>
Использование import maps позволяет:
Import Maps появились как эксперимент в браузерах Chromium и постепенно получили поддержку в других движках. Основные этапы эволюции:
scopes и полное стандартизирование
(2021–2022): возможность точечного переопределения модулей для
различных частей приложения.Ключевой тренд: движение к нативному модульному подходу в браузере, снижение зависимости от сборщиков, упрощение управления версиями библиотек. Это делает Import Maps важным инструментом для современных веб-приложений, особенно в связке с Lit, где модульность и лёгкость компонентов — ключевой аспект архитектуры.
import-map.json и подключать его
через
<script src="import-map.json" type="importmap"></script>.Import Maps трансформируют работу с модулями и становятся основой современного подхода к разработке компонентов, таких как Lit, где важна лёгкость, модульность и скорость загрузки.