Использование классов ES6 ИЛИ Object Literal в контроллерах для приложения Express + NodeJS
===========================================================================================

Есть две вещи, которые меня очень смущают.

В чем преимущество использования любого из литералов класса ES6 или Object.

И где я должен использовать любой из них?

Некоторые из примеров, которые я пробую, упомянуты ниже. Пожалуйста, дайте мне знать, когда использовать конкретный способ реализации, а когда нет.

Пример класса 1:

Пример класса 2:

Пример литерала объекта:

Что я думаю, прочитав о них, так это:

**Пример класса 1:**

Вы не можете создать более 1 объекта. Потому что модуль выполняется только один раз. Таким образом, при каждом импорте вы получите один и тот же объект. Нечто похожее на синглтон. (Поправьте меня здесь, если я неправильно понял)

Вы не сможете получить доступ к статическим методам класса, потому что вы экспортируете только объект класса.

**Пример класса 2:**

Если у вас есть класс, который не содержит ничего, кроме вспомогательных методов, а объект не имеет какого-либо состояния, бессмысленно все время создавать объект этого класса. Таким образом, в случае вспомогательных классов это не должно использоваться.**Пример литерала объекта:**

Вы не можете сделать наследство.

Один и тот же объект будет передаваться по каждому требованию. (Поправьте меня, если я здесь тоже не прав)

Пожалуйста, помогите мне понять эти понятия, что я упускаю, что я неправильно понял и что следует использовать, когда и где. Я буду очень благодарен за вашу помощь.

**Не стесняйтесь редактировать вопрос, если вы думаете, что я где-то допустил ошибку.**

Пример класса 1: Вы не можете создать более 1 объекта. Потому что модуль выполняется только один раз. Таким образом, при каждом импорте вы получите один и тот же объект. Нечто похожее на синглтон.

Правильный. Поэтому это антипаттерн. Не используйте это.`class` синтаксис не заменяет объектные литералы.

Вы не сможете получить доступ к статическим методам класса, потому что вы экспортируете только объект класса.

Теоретически вы можете сделать`auth.constructor.…` но это не хорошо

Пример класса 2: Если у вас есть класс, который не содержит ничего, кроме вспомогательных методов, и у объекта нет состояния, нет смысла все время создавать объект этого класса. Таким образом, в случае вспомогательных классов это не должно использоваться.

Правильный. Вместо этого используйте простой литерал объекта или, что еще лучше, несколько именованных экспортов вместо «служебных объектов».

Object Literal Пример: вы не можете делать наследование.

Вы все еще можете использовать`Object.create` делать наследство, или паразитическое наследование, или действительно что-нибудь.

Один и тот же объект будет передаваться по каждому требованию.

Правильно, но это не недостаток. Если ваш объект содержит состояние, вы должны были использовать`class` вместо.



Если у вашего класса есть конструктор, вы можете построить несколько объектов из этого класса threw:

Конечно, ваш Panier будет определен в файле Panier.js, расположенном в том же каталоге: