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>