В чем разница с модуляцией кода javascript (с помощью браузера на примере) и инъекцией зависимостей?Разница между javascript-модуляцией и зависимостью Injection
Являются ли они синонимами? Соединяются ли эти два? Или я пропустил какой-то момент?
В чем разница с модуляцией кода javascript (с помощью браузера на примере) и инъекцией зависимостей?Разница между javascript-модуляцией и зависимостью Injection
Являются ли они синонимами? Соединяются ли эти два? Или я пропустил какой-то момент?
Модуляция относится к разрыву кода в отдельные независимые «пакеты».
Включение зависимостей означает не ссылки на жесткие коды других модулей.
В качестве практического примера, вы можете написать модули, которые не используют инъекции зависимостей:
import { Foo } from 'foo';
export function Bar() {
return Foo.baz();
}
Здесь у вас есть два модулей, но этот модуль импортирует специфический другой жёстко~d прописанного модуля.
тот же модуль, написанный с использованием инъекции зависимостей:
export function Bar(foo) {
return foo.baz();
}
Тогда кто-то может использовать это как:
import { Foo } from 'foo';
import { Bar } from 'bar';
Bar(Foo());
Вы впрыскивать Foo
зависимости во время вызова, вместо того, чтобы жестко прописывать зависимость ,
Вы можете передать этот article:
модули представляют собой фрагменты кода, которые реализуют определенную функциональность и написаны с использованием конкретных методов. На языке JavaScript отсутствует схема модуляции . Предстоящая спецификация ECMAScript 6 имеет тенденцию разрешать это, введя концепцию модуля на языке JavaScript. Это будущее.
и Dependency injection in JavaScript
Цель
Давайте предположим, что у нас есть два модуля. Первый - это служба, которая делает запросы Ajax, а вторая - маршрутизатором.
var service = function() { return { name: 'Service' }; } var router = function() { return { name: 'Router' }; }
У нас есть еще одна функция, которая нуждается в этих модулях.
var doSomething = function(other) { var s = service(); var r = router(); };
И сделать вещи немного более интересной функции необходимо принять еще один параметр. Конечно, мы могли бы использовать приведенный выше код, , но это не очень гибко. Что делать, если мы хотим использовать ServiceXML или ServiceJSON. Или что делать, если мы хотим создать некоторые из модулей для целей тестирования . Мы не можем просто отредактировать тело функции. Первое, что мы все придумали, - это передать зависимостям параметры функции. Т.е .:
var doSomething = function(service, router, other) { var s = service(); var r = router(); };
Делая это, мы проходим точное выполнение модуля , который мы хотим. Однако это создает новую проблему. Представьте, если у нас есть doSomething по всему нашему коду. Что произойдет, если нам понадобится третья зависимость . Мы не можем редактировать все вызовы функции. Итак, нам нужен инструмент , который сделает это для нас. Это то, что пытаются спросить инжекторы .Давайте записать несколько целей, которые мы хотим достижения:
- мы должны иметь возможность зарегистрировать зависимости
- инжектор должен принять функцию и должен возвращать функцию, которая каким-то образом получает необходимые ресурсы
- мы должны не писать много, нам нужен короткий и приятный синтаксис
- инжектор должен держать объем переданной функции
- переданной функцию должна быть в состоянии принимать собственные аргументы, а не только описанные зависимости
Прекрасный список не так ли. Давайте погрузимся.
Вы просмотрели https://en.wikipedia.org/wiki/Module_(disambiguation)#Computing_and_engineering и https://en.wikipedia.org/wiki/Dependency_injection? – Bergi