Я работаю в рамках Javascript + BackboneJS (инфраструктура MVC) + Framework RequireJS, но этот вопрос несколько носит общий характер.Инъекция зависимостей против управляемых зависимостей против глобального объекта
Позвольте мне начать с объяснения, что в магистральной сети, ваши взгляды представляют собой смесь традиционных представлений и контроллеров, и ваши HTML шаблоны традиционные MVC Просмотров
ломал голову об этом на некоторое время и я не уверен, какой должен быть правильный/прагматичный подход.
У меня есть объект User, который содержит пользовательские настройки (например, систему единиц, выбор языка, что-то еще), от которых зависит много кода.
Некоторые из моих представлений делают большую часть работы без использования шаблонов (с использованием сторонних библиотек, таких как Mapping и Graphing libs), и поэтому они имеют зависимость от объекта User, чтобы заботиться о преобразовании единиц, например. В настоящее время я использую RequireJS для управления этой зависимостью, не нарушая при этом инкапсуляцию.
Некоторые из моих представлений сами по себе мало работают и передают только данные модели в мой шаблонный шаблон/шаблоны, которые выполняют эту работу и имеют зависимость от объекта User, опять же, для таких вещей, как преобразование единиц. Единственный способ передать эту зависимость в шаблон - это ввести ее в модель и передать модель в механизм шаблона.
Мой вопрос в том, как лучше всего справиться с такой широко требуемой зависимостью? - Создать общедоступный справочный/глобальный объект, доступный везде? (YUK) - Использовать управляемые зависимости RequireJS, хотя обычно рекомендуется использовать управляемую загрузку зависимостей для определений классов/объектов, а не конкретных объектов. - Или только когда-либо применяйте инъекцию зависимостей и вручную передавайте эту зависимость во все, что в ней нуждается?
Для чего вы можете найти несколько отличных шаблонов для смягчения этой проблемы, используя отложенные данные, чтобы сидеть перед коммутируемыми глобалами, которые могут быть изменены асинхронно –