非常に混乱している2つのことがあります。Express + NodeJSアプリケーション用のコントローラのES6クラスまたはオブジェクトリテラルの使用
ES6クラスまたはオブジェクトリテラルを使用する利点は何ですか?
そして、どこで使用すればよいですか?
私が試しているいくつかの例を以下に挙げます。具体的な実施方法をいつ使用するのか、そうでないのかを教えてください。
クラスの例1:
// auth.js
class Auth {
login(req, res) {...}
signup(req, res) {...}
}
module.exports = new Auth();
// index.js
const auth = require('auth');
クラスの例2:
// auth.js
class Auth {
login(req, res) {...}
signup(req, res) {...}
}
module.exports = Auth;
// index.js
const Auth = require('auth');
const auth = new Auth();
オブジェクトリテラルの例:
// auth.js
module.exports = {
login: (req, res) => {...},
signup: (req, res) => {...}
};
// index.js
const auth = require('auth');
私がそれらについて読むことから考えると、その次のとおりです。
クラスの例1:
あなたは1つの以上のオブジェクトを作成することはできません。モジュールは一度だけ実行されるためです。したがって、すべてのインポート時に同じオブジェクトが取得されます。シングルトンに似たもの。
クラスのオブジェクトをエクスポートするだけなので、クラスの静的メソッドにアクセスすることはできません。
クラスの例2:あなたはヘルパーメソッドしか含まれていないクラスを持っていると、オブジェクトがどのような状態を持っていない場合は
- は、それは、このクラスのオブジェクトを作成する意味がありませんすべて時間。したがって、ヘルパークラスの場合、これは使用すべきではありません。
オブジェクトリテラルの例:
あなたは継承を行うことはできません。
同じオブジェクトは、必要なときに渡されます。
は私がこれらの概念を理解する助けてください(私はここにも間違っているなら、私を修正して)、私は欠けているものを、私が誤解してきたし、何がいつ、どこで使用すべきです。私はあなたの助けに非常に感謝しています。
あなたがどこかで間違いを犯したと思われる場合は、自由に質問を編集してください。あなたのクラスがコンストラクタを持っている場合は、このクラスから複数のオブジェクトを構築することができ
大丈夫です!私は、クラスがオブジェクトリテラルの代わりになると考えていました。それは本当ですか?そして、プロジェクト全体(オブジェクトリテラルを使用するコントローラと、クラスを使用して状態を保持する一部のサービス)で、クラスとオブジェクトリテラルの両方を混在させることはできますか?ありがとう。 –
私の疑問のほとんどすべてを明らかにするので、私はあなたの答えを受け入れるでしょう。ありがとう:) –
いいえ、 'class'構文はコンストラクタ宣言+プロトタイプの代わりです。状態を保持するときにのみ使用する必要があります。複数のインスタンスが必要です。あなたはそれらをオブジェクトと混在させることができますし、混在させることもできます。オブジェクトのリテラル構文は、ES6でも簡潔なメソッドと計算されたプロパティで強化されています。 – Bergi