≪ Today I learned.
RSS購読
    公開日
    タグ
    HTML , JavaScript
    著者
    ダーシノ

    importmapで依存関係を管理する

    昨今のフロントエンド開発は、バンドル前提が主流になっている。

    外部パッケージを含めたすべてのコードを、ひとつ、ないし数個のファイルにまとめて提供することで、依存関係の管理が容易になる。反面、頻繁に変更が入るコードとそうでないコードがひとつのファイルとして扱われるため、キャッシュができず、毎回大きなファイルを読み込むため、パフォーマンスが悪化するというデメリットがある。(chunkを使った場合はその限りではない)

    ブラウザにはimportmapという仕組みが搭載され、依存関係(import元)を管理することができる。なお、<script defer><script asyc>といった属性は指定できない。

    <script type="importmap">
      {
        "imports": {
          "moduleA": "/path/to/moduleA.js",
          "moduleB": "https://cdn.example.com/moduleB.js",
          "prefix/": "/path/to/prefix/"
        }
      }
    </script>
    import { moduleA } from 'moduleA'
    import { moduleB } from 'moduleB'
    import { prefix } from 'prefix/moduleC'
    
    moduleA.doSomething()
    moduleB.doSomething()

    大規模なウェブアプリケーションでは、importmapを使って管理することは大変かもしれないが、ランディングページやペライチのような小規模なウェブページであれば、バンドラーを使わなくても管理できるかもしれない。