170 похожих чатов

Подскажите, почему я часто вижу, что в контоллерах используются классы,

например:
class UsersController {
getUsers(req, res) {
if (req.query.id) {
if (req.users.hasOwnProperty(req.query.id))
return res
.status(200)
.send({ data: req.users[req.query.id] })

почему не используется просто объект:
module.exports = {
getUsers: (req, res) => {
ведь мы экземпляр никогда не создаем, а используем просто метод класса через точку?

10 ответов

13 просмотров

1) В твоем примере он наверняка создается 2) Для реализации DI? 3) Ты видишь че делает роут по названию обертки(класса) 4) Можешь декораторы нахерачить много плюсов, и это правильно как по мне, когда у тебя большое апп

Pavel-Malashenko Автор вопроса
idk
1) В твоем примере он наверняка создается 2) Для р...

из написанного понял только про обертку. Но этого достаточно, чтобы исп класс. Спасибо

В твоём примере метод getUsers является не статическим, что подразумевает создание инстанса объекта. Но зачем там инстанс объекта, если нет работы с состоянием объекта. Лучше использовать статические методы в таком случае А вот зачем юзать статические методы класса, если, по сути, можно просто экспортировать функции отдельно - вопрос хороший. В JS разницы нет, и оборачивают такое в класс, как мне кажется, из-за практики в других языках Можешь погуглить что-то типа "static methods vs namespace" на эту тему

John Doe
В твоём примере метод getUsers является не статиче...

Так может там в конце module.exports = new UsersController() и все Все-таки синглтоны в ноде просто делать На счет второй части - замена неймспейсам, поэтому лучше такие вещи оборачивать в класс-объект

Pavel-Malashenko Автор вопроса
John Doe
В твоём примере метод getUsers является не статиче...

хорошо, погуглю, спасибо! Да, похоже это типо традиции такой + привычный синтаксис

Pavel Malashenko
так я и сделал

В целом тебе ничего не мешает объект сделать Типо const UsersController = {} module.exports = UsersController

Михаил Золотарёв
Так может там в конце module.exports = new UsersC...

> Все-таки синглтоны в ноде просто делать В этом просто нет практического смысла > На счет второй части - замена неймспейсам, поэтому лучше такие вещи оборачивать в класс-объект хз лучше или хуже. Шо то шо это

John Doe
> Все-таки синглтоны в ноде просто делать В этом ...

Ну например если у тебя есть метод getUser в контроллере, который должен вызвать аналогичный метод в сервисе, то в случае если это отдельные функции тебе или придется делать разные названия через постфиксы, например, или в дальнейшем в коде понимать по импортам, типо эта функция откуда импортируется из файла контроллеров или сервисов

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
22
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта