Size: a a a

NestJS — русскоязычное сообщество

2020 March 03

W

Wacker in NestJS — русскоязычное сообщество
я вобще окончательно запутался. Я могу не модули делать, а отдельно сервисы, отдельно контроллеры. Тогда какую задачу выполняет модуль
источник

GS

Grigorii K. Shartsev in NestJS — русскоязычное сообщество
Wacker
я вобще окончательно запутался. Я могу не модули делать, а отдельно сервисы, отдельно контроллеры. Тогда какую задачу выполняет модуль
контроллеры всё равно привязаны к модулю же
источник

W

Wacker in NestJS — русскоязычное сообщество
Grigorii K. Shartsev
контроллеры всё равно привязаны к модулю же
Ну как я понял они могут быть привязаны к модулю app
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
Wacker
я вобще окончательно запутался. Я могу не модули делать, а отдельно сервисы, отдельно контроллеры. Тогда какую задачу выполняет модуль
модуль изолирует какую-то предметную область.
источник

PS

Poluektov Sergey in NestJS — русскоязычное сообщество
Andrey Melikhov
Кстати, как вам кажется, нормально ли, что DI неста не даёт инверсии?
Что ты имеешь ввиду?
источник

DB

Dilame Bowzee in NestJS — русскоязычное сообщество
Andrey Melikhov
Кстати, как вам кажется, нормально ли, что DI неста не даёт инверсии?
А что это такое?)
источник

IK

ILshat Khamitov in NestJS — русскоязычное сообщество
кстати в динамические модули терь можно и импорты передавать  норм выходит
источник

DB

Dilame Bowzee in NestJS — русскоязычное сообщество
Wacker
Ну как я понял они могут быть привязаны к модулю app
Например, ты хочешь отключить какой-то кусок функционала, отвечающий за генерацию документов.
Если всё, что за отвечает за генерацию, сгруппировано в модуль, то ты лезешь в app.module.ts  и убираешь там только один import. А если у тебя это не сгруппировано, то ты как патологоанатом начинаешь скальпелем вырезать ненужные куски.

То же самое если ты вдруг решил вынесть генерацию доков в отдельный npm модуль
источник

W

Wacker in NestJS — русскоязычное сообщество
Dilame Bowzee
Например, ты хочешь отключить какой-то кусок функционала, отвечающий за генерацию документов.
Если всё, что за отвечает за генерацию, сгруппировано в модуль, то ты лезешь в app.module.ts  и убираешь там только один import. А если у тебя это не сгруппировано, то ты как патологоанатом начинаешь скальпелем вырезать ненужные куски.

То же самое если ты вдруг решил вынесть генерацию доков в отдельный npm модуль
ооо, понял. Спасибо!
источник

IK

ILshat Khamitov in NestJS — русскоязычное сообщество
ILshat Khamitov
кстати в динамические модули терь можно и импорты передавать  норм выходит
не тока подменил но и добросил модули которые нужны новой версии сервиса
источник

LK

L K in NestJS — русскоязычное сообщество
Andrey Melikhov
Кстати, как вам кажется, нормально ли, что DI неста не даёт инверсии?
это можно сделать, но это не так явно как бы хотелось
на уровне объявления провайдера
тут проблема в js
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
L K
это можно сделать, но это не так явно как бы хотелось
на уровне объявления провайдера
тут проблема в js
да, но как же это неприятно
источник

LK

L K in NestJS — русскоязычное сообщество
Andrey Melikhov
да, но как же это неприятно
делал типа так

abstract class FsService { //some abstracts methods }

class LocalFS extends FsService { // impl abstracts methods }

у провайдере
{ provide: FsService, useClass: LocalFs } например, можно через useFactory и с env вытянуть какой адаптер юзать для fs

и в конструкторе
constrcutor( private fs: FsService )
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
Poluektov Sergey
Что ты имеешь ввиду?
Инверсия зависимости нужна для того, чтобы выскоуровневые политики не заисили от низкоуровневых (т.е. например, бизнес-логика не зависела от отображения). Фактически нужно избавиться от прямых импортов низкоуровневых политик внутри высокоуровневых политик. Это даёт DI. Но ‘нормальный’ DI должен быть построен на интерфейсах, nest же предлагает по умолчанию DI на типах классов, которые мы импортим откуда? из реализации. Т.е. наши зависимости остаются не развернутыми.
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
L K
делал типа так

abstract class FsService { //some abstracts methods }

class LocalFS extends FsService { // impl abstracts methods }

у провайдере
{ provide: FsService, useClass: LocalFs } например, можно через useFactory и с env вытянуть какой адаптер юзать для fs

и в конструкторе
constrcutor( private fs: FsService )
ага, боллерплейта больше, но становится сильно гибче.
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
L K
делал типа так

abstract class FsService { //some abstracts methods }

class LocalFS extends FsService { // impl abstracts methods }

у провайдере
{ provide: FsService, useClass: LocalFs } например, можно через useFactory и с env вытянуть какой адаптер юзать для fs

и в конструкторе
constrcutor( private fs: FsService )
Камиль это странно объяснил “ну у нас нет интерфейсов, потому ребята извините, мы будем предлагать плохие практики”.
источник

PS

Poluektov Sergey in NestJS — русскоязычное сообщество
Andrey Melikhov
Инверсия зависимости нужна для того, чтобы выскоуровневые политики не заисили от низкоуровневых (т.е. например, бизнес-логика не зависела от отображения). Фактически нужно избавиться от прямых импортов низкоуровневых политик внутри высокоуровневых политик. Это даёт DI. Но ‘нормальный’ DI должен быть построен на интерфейсах, nest же предлагает по умолчанию DI на типах классов, которые мы импортим откуда? из реализации. Т.е. наши зависимости остаются не развернутыми.
Ах, ты про это. Ну да, это проблема. Я остановился на использовании констант для инжекта зависимостей и экспорте интерфейсов из сервиса, которые потом где-то имплементирую
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
Poluektov Sergey
Ах, ты про это. Ну да, это проблема. Я остановился на использовании констант для инжекта зависимостей и экспорте интерфейсов из сервиса, которые потом где-то имплементирую
Тогда ты сваливаешься в сервис-локатор
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
Всё же писать чистый конструктор без завязки на IoC-контейнер гораздо приятнее
источник

DZ

Dmitry Zakharov in NestJS — русскоязычное сообщество
Andrey Melikhov
Всё же писать чистый конструктор без завязки на IoC-контейнер гораздо приятнее
Согласен
источник