Size: a a a

2020 March 27

AM

Andrey Melikhov in Node.js SPb
сomorsiс
Но декоратор вроде только добавляет метадату и все?
этот декоратор летит из фреймворка всё равно. и все инъекции зависимостей летят из IoC фреймворка. В тестах придется это повторить
источник

с

сomorsiс in Node.js SPb
Andrey Melikhov
этот декоратор летит из фреймворка всё равно. и все инъекции зависимостей летят из IoC фреймворка. В тестах придется это повторить
Так, но декоратор вряд ли оверрайдит конструктор
источник

AM

Andrey Melikhov in Node.js SPb
Alexey Vykhrystyuk
хм а если так (наполовину руками)?
cats-service.ts:

export class CatsService {
 constructor(repository: ICatsRepository) {}
}


app.module.ts:

@Module({
 providers: [
   { provide: ‘ICatsRepository’, useFactory: () => new CatsRepository() },
   {
     provide: ‘CatsService’,
     useFactory: (repository: ICatsRepository) => new CatsService(repository),
     inject: [‘ICatsRepository’],
   }
 ],
})
export class AppModule {}


в таком подходе нам не нужна метадата, т.к. мы сами делаем new T() (но только в конфигурации DI !)
а за нас весь граф зависимостей сам резолвится будет
Но тут еще все можно ошибиться с порядком аргументов в inject (ts не чекает), возможно это честная плата за использования общего DI фрейморка и в тоже время отвязанную бизнес логику от него

P.S: Вместо строк можно использовать что-то другое например так (или Symbol ) :
{ provide: CatsRepository, useFactory: () => new CatsRepository() },
а такой inject это из неста синтаксис?
источник

AM

Andrey Melikhov in Node.js SPb
сomorsiс
Так, но декоратор вряд ли оверрайдит конструктор
не оверрайдит. Я согласен, что проникновение тут минимально. Но оно всё равно есть как зависимость. Это нужно учитывать. И как я выше писал — для многих проектов это допустимая грязь
источник

с

сomorsiс in Node.js SPb
Andrey Melikhov
не оверрайдит. Я согласен, что проникновение тут минимально. Но оно всё равно есть как зависимость. Это нужно учитывать. И как я выше писал — для многих проектов это допустимая грязь
Я бы добавил что большее это для многих проектов чрезмерная чистота
источник

AV

Alexey Vykhrystyuk in Node.js SPb
Andrey Melikhov
а такой inject это из неста синтаксис?
источник

AM

Andrey Melikhov in Node.js SPb
норм. хороший вариант для подключения бизнес-логики вообще без оберток
источник

AM

Andrey Melikhov in Node.js SPb
упустил )
источник

AV

Alexey Vykhrystyuk in Node.js SPb
👍
источник

AV

Alexey Vykhrystyuk in Node.js SPb
сomorsiс
Если вопрос в замене фреймворка на другой - можно завернуть его в свой декоратор
но ведь новый фреймворк может работать вообще совершенно по другому - нету там декораторов.
источник

AM

Andrey Melikhov in Node.js SPb
тут ещё большой вопрос что будет с декораторами
источник

с

сomorsiс in Node.js SPb
Alexey Vykhrystyuk
но ведь новый фреймворк может работать вообще совершенно по другому - нету там декораторов.
Инверсифай тоже на самом деле не через декораторы
источник

МС

Матвей Старцев in Node.js SPb
Andrey Melikhov
этот декоратор летит из фреймворка всё равно. и все инъекции зависимостей летят из IoC фреймворка. В тестах придется это повторить
а в чем проблема повторять это в тестах? чтобы тесты проще делать?
источник

с

сomorsiс in Node.js SPb
Матвей Старцев
а в чем проблема повторять это в тестах? чтобы тесты проще делать?
Чтобы быть уверенным что инжектишь то что надо
источник

AM

Andrey Melikhov in Node.js SPb
Матвей Старцев
а в чем проблема повторять это в тестах? чтобы тесты проще делать?
Ну ты либо пишешь чистую бизнес-логику которую легко тестировать (дал данные на вход — получил данные на выходе). Либо прибиваешь туда фреймворк, базу данных, сеть и половину джунглей впридачу. А потом начинаешь это бешенно мокать
источник
2020 April 06

AM

Anastasia Molozhina in Node.js SPb
Дорогие друзья!

В этот четверг, 9 апреля, мы проведём наш второй online митап - Node.js SPb MeetUp10!

Наши спикеры:

Илья Климов, Senior Frontened Engineer из компании GitLab, представит доклад "Асинхронность и контекст: счастливы вместе!"

"В Node.js 13.10 тихо и незаметно появилось AsyncLocalStorage. Спустя много лет ожидания, у нас теперь есть способ хранить контекст для асинхронных операций "из коробки". В докладе мы поговорим о том почему так важно было увидеть эту функциональность в составе самого Node.js, зачем и когда ее применять."

Максим Манылов, веб-разработчик, расскажет о лайвкодинге api с аутентификацией и ролями на фреймворке Moleculer.js.

ВАЖНО!!!

В связи с большой загрузкой каналов связи, мы решили не стримить доклады на наш Yotube канал, а пригласить вас в общую конференцию Zoom. В данной программе также можно и нужно задавать свои вопросы спикерам. Это можно сделать как в чате, так и голосом по завершению доклада спикера. За час до начала мероприятия мы пришлём вам ссылку на участие в конференции.

Если у вас не установлен Zoom, то загрузка автоматически начнётся при переходе по ссылке.

Регистрируйся на наш MeetUp, чтобы получить ссылку на трансляцию: https://nodejs-spb-event.timepad.ru/event/1289650/
источник

ВШ

Вениамин Шитиков in Node.js SPb
Ого! Климова заманили ))
источник
2020 April 07

AM

Andrey Melikhov in Node.js SPb
Попробую зазвать на стрим Андрея Печкурова, как автора одной из реализаций AsyncLocalStorage (спойлер, победила другая) https://github.com/nodejs/node/pull/31016
источник

AM

Anastasia Molozhina in Node.js SPb
Супер, спасибо)
источник

AM

Andrey Melikhov in Node.js SPb
Спасибо. Мне Виктор уже скинул ссылку
источник