Использование классов ES6 ИЛИ Object Literal в контроллерах для приложения Express + NodeJS
Есть две вещи, которые меня очень смущают.
В чем преимущество использования любого из литералов класса ES6 или Object.
И где я должен использовать любой из них?
Некоторые из примеров, которые я пробую, упомянуты ниже. Пожалуйста, дайте мне знать, когда использовать конкретный способ реализации, а когда нет.
Пример класса 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:
Если у вас есть класс, который не содержит ничего, кроме вспомогательных методов, а объект не имеет какого-либо состояния, бессмысленно все время создавать объект этого класса. Таким образом, в случае вспомогательных классов это не должно использоваться.Пример литерала объекта:
Вы не можете сделать наследство.
Один и тот же объект будет передаваться по каждому требованию. (Поправьте меня, если я здесь тоже не прав)
Пожалуйста, помогите мне понять эти понятия, что я упускаю, что я неправильно понял и что следует использовать, когда и где. Я буду очень благодарен за вашу помощь.
Не стесняйтесь редактировать вопрос, если вы думаете, что я где-то допустил ошибку.