Node.jsモジュール:ベストプラクティス - 複数のmodule.exportsを宣言する場合

2024-04-02

Node.jsで複数のmodule.exportsを宣言する方法

複数の方法

  1. オブジェクトリテラル:
module.exports = {
  add: (a, b) => a + b,
  subtract: (a, b) => a - b,
};
  1. 個別にプロパティを割り当てる:
module.exports.add = (a, b) => a + b;
module.exports.subtract = (a, b) => a - b;
  1. exports オブジェクトを使う:
const exports = module.exports;

exports.add = (a, b) => a + b;
exports.subtract = (a, b) => a - b;
  1. ES6モジュール:
export function add(a, b) {
  return a + b;
}

export function subtract(a, b) {
  return a - b;
}

注意点

  • 1つのファイルで複数のデフォルトエクスポートはできません。
  • オブジェクトリテラル形式を使うと、キー名でエクスポートされた関数を呼び出すことができます。
  • exports オブジェクトを使うと、module.exports と同じプロパティを指しますが、ES6モジュールでは推奨されません。
  • ES6モジュールを使う場合は、export キーワードを使って関数をエクスポートします。



math.js

// オブジェクトリテラル形式
module.exports = {
  add: (a, b) => a + b,
  subtract: (a, b) => a - b,
  multiply: (a, b) => a * b,
  divide: (a, b) => a / b,
};

index.js

// math.js をインポート
const math = require('./math');

// インポートした関数を呼び出す
console.log(math.add(1, 2)); // 3
console.log(math.subtract(4, 2)); // 2
console.log(math.multiply(3, 4)); // 12
console.log(math.divide(10, 2)); // 5

実行結果

3
2
12
5



複数のmodule.exportsを宣言するその他の方法

クラスを使う

class Math {
  add(a, b) {
    return a + b;
  }

  subtract(a, b) {
    return a - b;
  }

  multiply(a, b) {
    return a * b;
  }

  divide(a, b) {
    return a / b;
  }
}

module.exports = new Math();

関数を使う

function add(a, b) {
  return a + b;
}

function subtract(a, b) {
  return a - b;
}

function multiply(a, b) {
  return a * b;
}

function divide(a, b) {
  return a / b;
}

module.exports = {
  add,
  subtract,
  multiply,
  divide,
};

名前空間を使う

const math = {
  add: (a, b) => a + b,
  subtract: (a, b) => a - b,
  multiply: (a, b) => a * b,
  divide: (a, b) => a / b,
};

module.exports = math;

デフォルトエクスポートを使う

export default {
  add: (a, b) => a + b,
  subtract: (a, b) => a - b,
  multiply: (a, b) => a * b,
  divide: (a, b) => a / b,
};
  • クラスや関数を使う場合は、new 演算子や関数呼び出しが必要になります。
  • 名前空間を使う場合は、module.exports にオブジェクトを直接割り当てる必要があります。
  • デフォルトエクスポートは1つしか使用できません。

node.js module


Node.jsでスマートなファイル作成:存在すれば更新、なければ新規作成

ファイルが存在しない場合にのみファイルを生成するには、以下の2つの方法があります。まず、fs. exists() 関数を使用して、ファイルが存在するかどうかを確認します。ファイルが存在しない場合は、fs. writeFile() 関数を使用して新しいファイルを作成します。...


node.js, unix, permissions: npmエラーをsudoなしで解決する方法

この解説では、node. js、unix、permissions に関連する npm エラーを sudo なしで修正する方法について、原因と解決策を分かりやすく説明します。npm エラーは、さまざまな原因によって発生します。以下に、代表的なエラーメッセージとその原因をまとめました。...


【徹底解説】NPM: 'npm link' 後にモジュールが見つからない問題を解決する方法

npm link コマンドを実行しても、リンク対象のモジュールが読み込まれないことがあります。原因:主に以下の2つの原因が考えられます。キャッシュ: npm link はシンボリックリンクを作成しますが、npmキャッシュに古い情報が残っている場合、古いモジュールが読み込まれてしまう可能性があります。...


Jestでprocess.envオブジェクトをテストする

このチュートリアルでは、Jestを使ってprocess. envオブジェクトから環境変数を読み込み、その値に基づいて処理を行うコードをテストする方法を説明します。以下のコードは、process. envオブジェクトからNODE_ENV環境変数を読み込み、その値に基づいてメッセージを出力する例です。...


【完全網羅】Angularで発生するあらゆるエラーの原因と解決方法を大公開! "Could not find the implementation for builder @angular-devkit/build-angular:dev-server on ng serve command" エラーもこれで解決!

このエラーは、Angular CLI コマンド ng serve を実行した際に発生する可能性があります。これは、Angular プロジェクトのビルドに必要なパッケージが不足しているか、破損していることを示しています。原因このエラーの主な原因は以下の2つです。...