1. ホーム
  2. javascript

[解決済み] Node.jsで別のファイルからJavaScriptのクラス定義をインクルードする

2022-05-26 11:36:35

質問

Node.jsの簡単なサーバを書いています。 User のようなものです。

function User(socket) {
    this.socket = socket;
    this.nickname = null;

    /* ... just the typical source code like functions, variables and bugs ... */

    this.write = function(object) {
        this.socket.write(JSON.stringify(object));
    }
};

という感じで、後半は何度もインスタンス化しています。

var server = net.createServer(function (socket) {
    /* other bugs */
    var user = new User(socket);
    /* more bugs and bad practise */
});

を移動させることはできますか? User クラス定義を別のjavascriptファイルに移動し、何らかの方法でそれをinclude"することはできますか?

どのように解決するのですか?

単純にこうすればいいのです。

user.js

class User {
  //...
}

module.exports = User // ???? Export class

server.js

const User = require('./user.js')

let user = new User()

これは 共通JS モジュールと呼ばれています。

ESモジュール

Node.jsのバージョン14以降では、CommonJSでESモジュールを使用することができます。詳しくは ESMドキュメント .

user.mjs (????拡張子は重要です)

export default class User {}

server.mjs

import User from './user.mjs'

let user = new User()