script 要素の type 属性に importmap を指定すると、 script 要素の本体がインポートマップになるexport や import を使うことで、ESModulesになる"use strict;" を付けた場合と同じ挙動で、自動的に厳格モードになる
export function appendSquare(selector) {
document.querySelector(selector)?.append('🟪');
}
export function appendCircle(selector) {
document.querySelector(selector)?.append('🟠');
}
<script type="module">
import { appendSquare } from '/js-tips/importmap/modules/shapes/square.js';
import { appendCircle } from '/js-tips/importmap/modules/shapes/circle.js';
appendSquare('#result_01');
appendCircle('#result_01');
</script>
import することはできないscript 要素は、ESModulesをインポートする script 要素の前に宣言し、処理する必要がある/ ./ ../ で始まる相対URLパスでも可能
<script type="importmap">
{
"imports": {
"square": "/js-tips/importmap/modules/shapes/square.js",
"circle": "/js-tips/importmap/modules/shapes/circle.js"
}
}
</script>
<script>
import { appendSquare } from 'square';
import { appendCircle } from 'circle';
appendSquare('#result_01');
appendCircle('#result_01');
</script>
/) を保有する必要がある
<script type="importmap">
{
"imports": {
"shapes/": "/js-tips/importmap/modules/shapes/"
}
}
</script>
<script>
import { appendSquare } from 'shapes/square.js';
import { appendCircle } from 'shapes/circle.js';
appendSquare('#result_02');
appendCircle('#result_02');
</script>