Size: a a a

2018 February 02

AM

Andrey Melikhov in Node.js SPb
источник

AV

Alexey Vykhrystyuk in Node.js SPb
Сегодня пытался что-то подобное задвинуть когда терли про IoC в ванила JS - http://plnkr.co/edit/dWb1zFfZyHcPwZs22k3L
источник

AV

Alexey Vykhrystyuk in Node.js SPb
Кто что думает по поводу такой реализации/использования? тут ключевой момент в том, что в качестве ключа при регистрации зависимостей мы используем не строку, а *абстрактный* (привет из плюсов) ES6 класс, который на самом деле в JS является construction function
источник

AV

Alexey Vykhrystyuk in Node.js SPb
Еще удобно, что находясь в классе App видно все его зависимости, правда конфигурируется через класс-декоратор (   @Injectable([ILogger])   ) ну и хрен с ним. За то это позволяет явно видеть интерфейсы зависимостей. Ну и в IDE удобно делать ‘Go to definition’ и проваливаться прямо в файл с интерфейсом
источник

AV

Alexey Vykhrystyuk in Node.js SPb
плюс в IDE есть человеческий рефакторинг названий у зависимостей
источник

AV

Alexey Vykhrystyuk in Node.js SPb
Минусы какие видите?
источник

AV

Alexey Vykhrystyuk in Node.js SPb
как вариант минуc: лишний прототип в цепочке прототипов
источник

AV

Alexey Vykhrystyuk in Node.js SPb
еще минус, но я пока не понял нужно ли это в IoC: реализация не может реализовать несколько интерфейсов, так как интерфейс это ES6 класс.
источник

ЕЩ

Евгений Щепотьев in Node.js SPb
Alexey Vykhrystyuk
еще минус, но я пока не понял нужно ли это в IoC: реализация не может реализовать несколько интерфейсов, так как интерфейс это ES6 класс.
У тебя все равно инжектиться какой-то объект, никакого комплишена у тебя не будет без javadoc, а если так, то какая разница на строчках это или на ссылках?
источник

AV

Alexey Vykhrystyuk in Node.js SPb
нормального комплишина не будет, но пара плюсов в этом есть, описал выше
источник

AV

Alexey Vykhrystyuk in Node.js SPb
Надо в фюность выложить, там точно засрут
источник

AM

Andrey Melikhov in Node.js SPb
:D
источник

AV

Alexey Vykhrystyuk in Node.js SPb
написал щас засрут
источник

NM

Nikolay Matvienko in Node.js SPb
Alexey Vykhrystyuk
Минусы какие видите?
Неплохо, но с вариантом строк мы делаем так
ioc.get('config')
и нам не нужно делать require типа, например в policy, где параметрами конструктора являются (req, res, next), таким образом меньше за собой нужно тащить, если ты захочешь ее тестировать.
источник

AV

Alexey Vykhrystyuk in Node.js SPb
Nikolay Matvienko
Неплохо, но с вариантом строк мы делаем так
ioc.get('config')
и нам не нужно делать require типа, например в policy, где параметрами конструктора являются (req, res, next), таким образом меньше за собой нужно тащить, если ты захочешь ее тестировать.
Спасибо, в моем случае вместо строки нужно было бы добавить импорт с абстрастным классом Config: ioc.get(Config)
источник

ЕЩ

Евгений Щепотьев in Node.js SPb
> Config: ioc.get(Config):
опять же зачем? тебе нужно сделать противоествественные для JS вещи, а именно описать интерфейс и его реализовать, но на самом деле в JS тебе от этого интерфейса ни жарко ни холодно, потому что нет строгой системы типов которая обяжет тебя следовать правилам типизации. Т.е. ты проделаешь лишнюю работу выделяя абстракции — а вопрос только один — зачем?
источник

ЕЩ

Евгений Щепотьев in Node.js SPb
Процитирую слова моего бывшего коллеги: Усложнять — легко, упрощать — сложно
источник

ЕЩ

Евгений Щепотьев in Node.js SPb
Если тебе нужна строгая типизация — ты выбрал не тот инструмент. Гвозди можно и микроскопом забивать, но нужно ли это?!
источник

VI

Viktor Isaev in Node.js SPb
Евгений Щепотьев
Процитирую слова моего бывшего коллеги: Усложнять — легко, упрощать — сложно
👍
источник

AV

Alexey Vykhrystyuk in Node.js SPb
Евгений Щепотьев
> Config: ioc.get(Config):
опять же зачем? тебе нужно сделать противоествественные для JS вещи, а именно описать интерфейс и его реализовать, но на самом деле в JS тебе от этого интерфейса ни жарко ни холодно, потому что нет строгой системы типов которая обяжет тебя следовать правилам типизации. Т.е. ты проделаешь лишнюю работу выделяя абстракции — а вопрос только один — зачем?
Почему тогда TS так популярен?
Это пример использования IoC на ванильном JS. Но вот если добавить сюда Flow, то заживём...
У Flow есть строгая система типов
источник