Size: a a a

Node.js — русскоговорящее сообщество

2021 January 20

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
Nikita
сук все эти фабрики, провайдеры...
ВООБЩЕ НОРМАЛЬНО))))
источник

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
Ну и самое веселое
источник

N

Nikita in Node.js — русскоговорящее сообщество
bruh
источник

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
Я контракты пишу, так что не путаюсь
источник

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
Самая всратость будет это когда я плагины начну писать
источник

N

Nikita in Node.js — русскоговорящее сообщество
вы тоже плодите по интерфейсу на каждый сервис или любой другой юнит в коде чтобы потом его инжектить?
источник

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
Условно, есть у тебя некий класс
class Foo {
   bar(): void {
       console.log(123);
   }
}

class FooPlugin {
   beforeBar(): void {
       console.log('bar');
   }
}
...

const foo = Application.getInstance().getContainer().resolve(Foo);

foo.bar(); /
/ 'bar' 123
источник

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
Типа перехват вызовов
источник

N

Nikita in Node.js — русскоговорящее сообщество
Nathan 🦊 Perk @RF (худеет)
Условно, есть у тебя некий класс
class Foo {
   bar(): void {
       console.log(123);
   }
}

class FooPlugin {
   beforeBar(): void {
       console.log('bar');
   }
}
...

const foo = Application.getInstance().getContainer().resolve(Foo);

foo.bar(); /
/ 'bar' 123
а зачем?)
источник

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
Nikita
а зачем?)
удобно иногда
источник

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
Это конечно ебанись абстракция
источник

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
Но лучше, чем плодить кучу вызовов
источник

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
сейчас у меня это сделано так
Application.getInstance().getContainer().bind(Foo, { usePlugins: [FooPlugin] });
источник

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
Но хочу менее всрато сделать
источник

N

Nikita in Node.js — русскоговорящее сообщество
у тебя же так будет скажем так "implicit"  код, будешь ожидать вызваать foo.bar() с одними последствиями, а в тихоньку будет вызван еще beforeBar() с другими
источник

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
по сути программный аналог трейтов
источник

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
Nikita
у тебя же так будет скажем так "implicit"  код, будешь ожидать вызваать foo.bar() с одними последствиями, а в тихоньку будет вызван еще beforeBar() с другими
не совсем
источник

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
смотри

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

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
Например, у модулей, ядра и некоторых сервисов есть метод boot

после вызова метода boot нужно проставлять проп booted = true

Я делаю вот так

container.bind(SomeService, { usePlugins: [BootablePlugin] });
источник

NP

Nathan 🦊 Perk @RF (х... in Node.js — русскоговорящее сообщество
Соотв. после вызова boot() у SomeService будет вызван afterBoot у BootablePlugin
источник