Verwenden von ES6-Klassen ODER Objektliteralen in Controllern für eine Express + NodeJS-App

Es gibt zwei Dinge, die mich sehr verwirren.

Was ist der Vorteil der Verwendung von ES6-Klassen- oder -Objektliteralen?

nd wo soll ich welche verwende

Einige der Beispiele, die ich ausprobiere, sind unten aufgeführt. Bitte lassen Sie mich wissen, wann eine bestimmte Art der Implementierung verwendet werden soll und wann nicht.

Class Beispiel 1:

// auth.js
class Auth {
  login(req, res) {...}
  signup(req, res) {...}
}

module.exports = new Auth();

// index.js
const auth = require('auth');

Klasse Beispiel 2:

// auth.js
class Auth {
  login(req, res) {...}
  signup(req, res) {...}
}

module.exports = Auth;

// index.js
const Auth = require('auth');
const auth = new Auth();

Object Literal Example:

// auth.js
module.exports = {
  login: (req, res) => {...},
  signup: (req, res) => {...}
};

// index.js
const auth = require('auth');

Was ich davon halte, ist das:

Class Beispiel 1:

Sie können nicht mehr als 1 Objekt erstellen. Weil ein Modul nur einmal ausgeführt wird. So erhalten Sie bei jedem Import das gleiche Objekt. Etwas Ähnliches wie Singleton. (Korrigiere mich hier, wenn ich es falsch verstanden habe)

Sie können nicht auf die statischen Methoden der Klasse zugreifen, da Sie nur das Objekt der Klasse exportieren.

Klasse Beispiel 2:

Wenn Sie eine Klasse haben, die nur Hilfsmethoden enthält und das Objekt keinen Status hat, ist es nicht sinnvoll, immer ein Objekt dieser Klasse zu erstellen. Im Fall von Hilfsklassen sollte dies nicht verwendet werden.

Object Literal Example:

Sie können keine Vererbung durchführen.

Das gleiche Objekt wird bei jeder Anforderung weitergegeben. (Korrigiere mich, wenn ich mich auch hier irre)

Bitte helfen Sie mir, diese Konzepte zu verstehen, was ich verpasse, was ich falsch verstanden habe und was wann und wo verwendet werden sollte. Ich werde für Ihre Hilfe sehr dankbar sein.

Fühlen Sie sich frei, die Frage zu bearbeiten, wenn Sie glauben, dass ich irgendwo einen Fehler gemacht habe.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage