Node.jsでES6モジュールを使う
Node.jsにおけるES6モジュール (ES6 import) の使い方
Node.jsは、JavaScriptのランタイム環境であり、従来はCommonJSモジュールシステムを使用していました。しかし、ES6 (ECMAScript 2015)以降、新たなモジュールシステムであるES6モジュールが導入されました。このES6モジュールは、よりモダンな構文と機能を提供し、Node.jsの開発をより効率的にします。
ES6モジュールを使用するための手順
Node.jsのバージョンを確認
- ES6モジュールを使用するには、Node.jsのバージョンが8.0以上である必要があります。
- ターミナルで
node --version
を実行してバージョンを確認してください。
モジュールファイルを作成
- モジュールとして使用するJavaScriptファイルを拡張子
.mjs
で作成します。 - 例えば、
myModule.mjs
というファイルを作成します。
- モジュールとして使用するJavaScriptファイルを拡張子
モジュールをインポート
- 他のJavaScriptファイルから
import
ステートメントを使用して、ES6モジュールをインポートします。 - 例えば、
main.mjs
というファイルでmyModule.mjs
をインポートするには、以下のように記述します。
// main.mjs import { myFunction } from './myModule.mjs'; myFunction();
- 他のJavaScriptファイルから
- モジュール内でエクスポートしたい変数や関数を
export
ステートメントを使用してエクスポートします。 - 例えば、
myModule.mjs
でmyFunction
をエクスポートするには、以下のように記述します。
// myModule.mjs function myFunction() { console.log('Hello from myModule!'); } export { myFunction };
- モジュール内でエクスポートしたい変数や関数を
注意点
- CommonJSモジュールとES6モジュールは互換性がありません。同じプロジェクト内で混在させる場合は、適切な設定や変換が必要です。
package.json
ファイルの"type"
フィールドを"module"
に設定することで、ES6モジュールを使用できるようにします。- ES6モジュールは、デフォルトではNode.jsで有効になっていません。
例
// myModule.mjs
function myFunction() {
console.log('Hello from myModule!');
}
export { myFunction };
// main.mjs
import { myFunction } from './myModule.mjs';
myFunction();
この例では、myModule.mjs
というモジュールを作成し、myFunction
をエクスポートしています。その後、main.mjs
で myModule.mjs
をインポートし、myFunction
を呼び出しています。
Node.jsにおけるES6モジュールの使用例
ES6モジュールをインポートする例
// main.mjs
import { myFunction } from './myModule.mjs';
myFunction();
- インポートされた関数を呼び出しています。
import
ステートメントを使用して、myModule.mjs
からmyFunction
をインポートしています。
// myModule.mjs
function myFunction() {
console.log('Hello from myModule!');
}
export { myFunction };
- エクスポートされた関数は、他のモジュールからインポートすることができます。
export
ステートメントを使用して、myFunction
をエクスポートしています。
ES6モジュールとCommonJSモジュールの混在
// myModule.js (CommonJSモジュール)
module.exports = {
myFunction: function() {
console.log('Hello from CommonJS module!');
}
};
// main.mjs (ES6モジュール)
import { myFunction } from './myModule.js';
myFunction();
main.mjs
からmyModule.js
をインポートし、myFunction
を呼び出しています。main.mjs
はES6モジュールとして定義されています。myModule.js
はCommonJSモジュールとして定義されています。
CommonJSモジュールを使用する例
// myModule.js (CommonJSモジュール)
module.exports = {
myFunction: function() {
console.log('Hello from CommonJS module!');
}
};
// main.js (CommonJSモジュール)
const myModule = require('./myModule.js');
myModule.myFunction();
require
関数を使用して、モジュールをインポートします。module.exports
を使用して、モジュールをエクスポートします。
Node.jsでは、ES6モジュールとCommonJSモジュールを混在させることができます。ただし、適切な設定や変換が必要となります。
モジュールローダー
- ES6モジュールは
.mjs
拡張子を使用します。 - CommonJSモジュールは
.js
拡張子を使用します。
- ES6モジュールは
package.json ファイルの設定
"type"
フィールドが"commonjs"
(デフォルト) の場合は、CommonJSモジュールが使用されます。
どちらを使用すべきか
ES6モジュールは、よりモダンな構文と機能を提供し、Node.jsの開発をより効率的にします。ただし、既存のプロジェクトやライブラリがCommonJSモジュールを使用している場合は、移行にコストがかかることがあります。
適切な方法を選択する際には、プロジェクトの要件やチームのスキルを考慮する必要があります。ES6モジュールを使用する場合は、プロジェクトの初期段階から導入することをおすすめします。
node.js es6-modules