Тёмный

Инверсия управления и внедрение зависимостей в Node.js 

Timur Shemsedinov
Подписаться 44 тыс.
Просмотров 14 тыс.
50% 1

Инверсия управления: github.com/HowProgrammingWork...
Внедрение зависимостей: github.com/HowProgrammingWork...
Курс «Основы программирования» с примерами на JavaScript habr.com/ru/post/464023/
#javascript #IoC #DI #инверсия #управления #injection #dependency #лекции #js #программирование

Опубликовано:

 

8 окт 2018

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 21   
@artavazdavagyan
@artavazdavagyan 2 года назад
наконец то я понял что такое Инверсия управления. огромное вам спасибо
@renatn8484
@renatn8484 4 года назад
определение DI дошло только в последние 5 минут, когда шло сравнение с dependency look up, после этого стала понятнее больше сама презентация. может стоит как то четче начинать саму презентацию с определения. Один слайд например ну и плюс какую нить картинку для визуализации - так легче воспринимать, чем просто речь на фоне слайда.
@ellisdos6714
@ellisdos6714 3 года назад
со второго просмотра зашло, код интересный, очень много интересных идей
@TimurSevimli
@TimurSevimli Год назад
Спасибо вам огромное!
@user-vx9ug1nb2t
@user-vx9ug1nb2t 4 года назад
Здравствуйте Тимур. В лекции вы приводите такой пример (на 18 минуте): системный код передает прикладному какую-нибудь библиотеку или функцию, в прикладном коде вокруг метода библиотеки/функции можно сделать обёртку, и если в системном коде вызвать этот же метод/функцию, то из кода обёртки можно поменять что-то в контексте системного кода. У меня возник большой вопрос как это сделать, ведь стрелочная функция берёт контекст (this) в том месте где была объявлена, а для function expression контекстом будет объект в котором она вызовется. То есть в любом случае до глобального контекста в системном коде не получается добраться. Или я чего-то не учитываю?
@timashoff
@timashoff 11 месяцев назад
Спасибо, сложно, надо пересмотреть и переварить через месяц-другой
@andreymaslikov3901
@andreymaslikov3901 3 года назад
Добрый день, переданная в setTimeout лямбда не обернётся, потому что она не последняя из аргументов "args[args.length - 1] = (...args) => {} " про это вы говорите тут 29:17
@timashoff
@timashoff 11 месяцев назад
так и есть, контракт у таймеров в js не callback last
@dmytrohaponov5517
@dmytrohaponov5517 2 года назад
В офф доке ноды по поводу VM модуля пишут следующее с первых строк - The vm module is not a security mechanism. Do not use it to run untrusted code. как это понимать? Мне с Vm модулем просто еще не приходилось работать
@TimurShemsedinov
@TimurShemsedinov 2 года назад
Так и есть, код, которому вы не доверяете вообще должен запускаться в более крепких контейнерах, лучше виртуалках, но можно и докере, хотя докер это тоже не секьюрити механизм.
@user-vx9ug1nb2t
@user-vx9ug1nb2t 4 года назад
Тимур, ещё скажите, пожалуйста, является ли паттерн фасад примером инверсии управления.
@TimurShemsedinov
@TimurShemsedinov 4 года назад
Нет, и мне даже непонятно, почему такое могло подуматься
@user-vx9ug1nb2t
@user-vx9ug1nb2t 4 года назад
@@TimurShemsedinov я подумал, что ПОЛУЧЕНИЕ кодом в файле application.js ссылки на библиотеку, например, fs и есть передача управления коду в этом файле над библиотекой fs. Я сравнил это с фасадом, ведь там тоже экземпляр одного класса получает возможность пользоваться методами другого класса.
@user-vx9ug1nb2t
@user-vx9ug1nb2t 4 года назад
@@TimurShemsedinov выходит, что нужно смотреть с другого конца. Скажите, пожалуйста, вот такой код будет являться инверсией управления. const a = {...}; const b = {...}; const framework = (obj) => b.someMethod(obj); framework(a);
@azatbagautdinov1792
@azatbagautdinov1792 5 лет назад
Можно ли сказать, что внедрение зависимостей исползуется для повышения абстракции на уровне модулей?
@TimurShemsedinov
@TimurShemsedinov 5 лет назад
Внедрение зависимости используется для неявного связывания модулей, на уровень абстракций это не влияет
@user-ex5wp9mh3x
@user-ex5wp9mh3x Год назад
Здравствуйте! Как можно организовать запуск всех файлов проекта в одном контексте vm и как при этом делать пробросы модулей с помощью инъекций из фреймворка в несколько файлов? И как такое можно организовать с паттерном MVC? Или нужно в таком случае каждому роуту, контроллеру и каждой модели создавать свой vm контекст и каждый раз делать новые инъекции модулей?
@grenadier4702
@grenadier4702 Год назад
17:28 а если написать delete api.console.log , не удалит во всех песочницах? Почему так? И правильно ли я поинмаю, что если что-то встроить в global, например, глобальный конфиг-файл, то это тоже своего рода di? global.config. { .... }
@delimobilstories6781
@delimobilstories6781 4 года назад
Небольшой вопрос по присваиванию значения null коллбэку в примере с внедрением зависимостей. Вы сказали, что null присваивается для избежания выбрасывания исключения. Мне недавно приходилось работать с блоком кода, обернутым в try - catch - finally. Он выполнялся правильно только в том случае, если ключевая переменная скрипта не была равна undefined. В случае, если все же была равна, критичного для работы программы ничего не происходило, но выбрасывалась ошибка. Чтобы избежать ее, я в блоке catch присвоил null переменной error. Можно ли считать такой подход правильным?
Далее
TypeScript Dependency Injection using tsyringe
7:12
Просмотров 31 тыс.
Never waste PASTA SAUCE @itsQCP
00:19
Просмотров 6 млн
Клиент-сервер на Node.js TCP и UDP, DNS
51:22
Public Interview for Node.js Developer
2:16:35
Просмотров 18 тыс.