【インポートマップス】

Import Maps とは?

公開:
💡 モジュール名の住所録をHTMLに書いて、ブラウザに渡す地図
📌 このページのポイント
Import Maps — モジュール名→URLのマッピング index.html <script type="importmap"> "imports": { "react": "https://cdn/.../react.js" } <script type="module" src="app.js"> ブラウザ import 'react' ↓ Import Maps参照 https://cdn/.../react.js CDN react.js モジュール配信 app.js import React from 'react' // 裸の識別子でOK バンドラー不要のメリット ・webpack/Viteなしで裸の識別子が使える ・CDNからそのままESモジュールを読み込める
Import Mapsがモジュール名をURLに解決するイメージ
ひよこ ひよこ
Import Mapsって何ができるの?
ペンギン先生 ペンギン先生
ブラウザが`import 'react'`という裸のモジュール名を見たとき、どのURLに取りに行くかを教える地図を定義できるんだよ。普通のブラウザURLでないとモジュールを読み込めないんだね。
ひよこ ひよこ
どうやって書くの?
ペンギン先生 ペンギン先生
`<script type="importmap">`タグの中にJSONで書くんだよ。たとえば`{"imports": {"react": "https://cdn.example.com/react.js"}}`と書けば、`import 'react'`がそのURLに解決されるんだね。
ひよこ ひよこ
バンドラーがなくてもいいの?
ペンギン先生 ペンギン先生
そうだよ。従来はwebpackやViteモジュールを束ねないと裸の識別子は使えなかったんだ。Import MapsがあればCDNURLを指定するだけで、バンドルなしにモジュールをそのまま使えるんだよ。
ひよこ ひよこ
どんなときに便利なの?
ペンギン先生 ペンギン先生
ビルドステップなしのシンプルなWebアプリや、Deno/ブラウザ環境でのプロトタイプ開発に向いているんだよ。Node.jsのnode_modulesの概念をブラウザに持ち込まずに済むのが便利なんだね。
ひよこ ひよこ
全部のブラウザで使えるの?
ペンギン先生 ペンギン先生
2023年以降のChrome・Firefox・Safari・Edgeすべてで標準サポートされているんだよ。Node.jsにも似た仕組みがあるし、DenoはImport Mapsを公式サポートしているんだね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Import Maps」って出てきたら「モジュール名→URLマッピングHTMLに書いてバンドラー不要にする機能」と思えばだいたいOK!
📖 おまけ:英語の意味
「Import Maps」 = インポートマップ
💬 モジュールの「地図」を定義するイメージだよ。裸の識別子('lodash'など)を実際のURLに変換するマッピング表を提供するんだよ。
← 用語集にもどる