Module Java Script
✅ .mjs の意味
-
Module JavaScript の略
-
ES Modules(import/export を使うモジュール方式)で書かれた JS ファイルであることを示す
ファイルの拡張子 .mjs は、ECMAScript Modules (ES Modules / ESM) として扱われる JavaScript ファイルであることを明示するための拡張子です。
主に Node.js 環境において、従来の読み込み方式(CommonJS)と区別するために使われます。
主な特徴とポイント
-
ES Modules (ESM) の強制
- Node.js では通常、
.jsファイルは CommonJS(require/module.exportsを使う方式)として扱われます。 .mjs拡張子を使うと、そのファイルは強制的に ES Modules(import/exportを使う方式)として扱われます。
- Node.js では通常、
-
構文の違い
- CommonJS (
.jsのデフォルト):const fs = require('fs'); module.exports = function() { ... }; - ES Modules (
.mjs):import fs from 'fs'; export function myList() { ... };
- CommonJS (
-
Strict Mode(厳格モード)がデフォルト
.mjsファイル内では、自動的に'use strict';が適用された状態になります(変数の宣言漏れがエラーになるなど、安全なコードになります)。
なぜ作られたのか?
JavaScript の標準仕様(ES2015/ES6)でモジュール機能(import/export)が決まりましたが、Node.js にはそれ以前から存在する独自のモジュール機能(CommonJS)がありました。
Node.js がファイルを実行する際、「このファイルは新しい方式(ESM)で読むべきか、古い方式(CommonJS)で読むべきか」を判断する必要があります。その判断を簡単かつ確実にするために、「.mjs なら新しい方式(ESM)である」というルールが導入されました。
最近のトレンド(package.json での設定)
現在では、拡張子を .mjs に変える代わりに、プロジェクトの設定ファイルである package.json に以下を記述する方法も一般的です。
{
"type": "module"
}
これを設定すると、そのプロジェクト内の .js ファイルもすべて ES Modules として扱われるようになります(逆に CommonJS を使いたい場合は .cjs という拡張子を使います)。
まとめ
.mjs= Node.js でimport/exportを使うためのファイル。- これを使うと、Node.js に対して「これはモダンな JavaScript (ESM) だよ」と伝えることができます。
MJSは JavaScript モジュールを表すファイル拡張子です。
主な特徴
ES Modules形式のJavaScriptファイルであることを明示的に示します。通常の.jsファイルと異なり、.mjsファイルは常にモジュールとして扱われます。
.jsとの違い
.js- package.jsonの設定によってモジュールか従来のスクリプトか決まる.mjs- 常にES Modulesとして扱われる.cjs- 常にCommonJS形式として扱われる
使用例
// math.mjs
export function add(a, b) {
return a + b;
}
// main.mjs
import { add } from './math.mjs';
console.log(add(2, 3));
Node.jsやモダンなJavaScript環境で、モジュールシステムを明確に区別したい場合に使用されます。ただし、最近ではpackage.jsonで"type": "module"を指定し、.js拡張子のままモジュールとして扱うことも一般的です。