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

    import属性がなぜ必要なのか

    ECMAScirpt 2025に追加予定のimport属性(import attributes)はなぜ必要なのか。

    webpackやViteなどのモジュールバンドラーを使って開発していると、import構文で参照したファイルはその中身が静的にわかるので、そのファイルを読み込んでよいかどうか判断できた。

    バンドラーを使わない場合は、import構文はブラウザで実行されるため、参照したファイルの中身が読み込むまでわからない。拡張子が*.jsonだからと言って本当にJSONである保証はない。改ざんされて悪意のあるコードが含まれるJavaScriptファイルという可能性もある。

    そのため、セキュリティの観点から明示的にファイルの種類を指定するimport属性が必要となる。

    // data.jsonがJavaScriptファイルに改ざんされている可能性がある
    import data from "https://example.com/data.json";
    
    // importするファイルの種類を明示的に指定する
    import data from "https://example.com/data.json" with { type: "json" };
    import data from "https://example.com/styles.css" with { type: "css" };

    ブラウザ対応状況