1. このページの目的
このページで、Import maps を試す。
2. デモ
静的インポートでモジュールを読み込み、文字列を表示する。
動的インポートでモジュールを読み込み、文字列を表示する。
3. ソースコード
<p class="demo-subtitle">静的インポートでモジュールを読み込み、文字列を表示する。</p>
<div class="demo" id="demo-area-static"></div>
<p class="demo-subtitle">動的インポートでモジュールを読み込み、文字列を表示する。</p>
<div class="demo" id="demo-area-dynamic"></div>
<script type="importmap">
//----------------------------
// インポートマップを定義する
//----------------------------
{
"imports": {
"foo": "./foo.1111.js"
}
}
</script>
<script type="module">
//----------------
// 静的インポート
//----------------
import foo from 'foo';
foo('demo-area');
//----------------
// 動的インポート
//----------------
import('foo')
.then((module) => {
console.log(module.default);
module.default('demo-area-dynamic');
});
</script>
<script type="importmap">
内で「呼び出し用の名前」と「実際のファイルパス」の対応を記述しておく。<script type="module">
内で「呼び出し用の名前」を使ってモジュールをインポートする。
export default function(id) {
const elm = document.querySelector(`#${id}`);
elm.textContent = 'This is foo.1111.js';
}
4. コメント
- 静的インポート、動的インポートともに Chrome 95 で動作した。
- 静的インポート、動的インポートともに Firefox 92 で動作しなかった。
- インポートマップさえ変更すれば、読み込むファイルが変更されるので、変更前のファイルのキャッシュが使われることはない。
5. 参考
- Import Maps
- guybedford/es-module-shims
- Shims for new ES modules features on basic modules support in browsers
- Import maps | Can I use...
- JavaScriptのバンドルとトランスパイルが不要なモダンWebアプリ | POSTD