2015-05-17 3 views
0

Я пытаюсь создать для веб-приложения архитектуру MVC с иерархическим маршрутизатором. Целью является управление всей бизнес-логикой и представлениями с четким рисунком.Mvc управлять контекстом и компонентами многократного использования

Позвольте мне сделать несколько примеров:

  1. индекс маршрута называется
  2. Index контроллер называется; он несет ответственность за включение представления в страницу.

Теперь проблемы:

  1. Как я могу управлять необходимый экземпляр модели и коллекции или услуг? Где они должны храниться? Если я храню их в контроллере, как они могут быть доступны из внешних ресурсов?

  2. Как я могу управлять всеми компонентами пользовательского интерфейса, у которых нет выделенного маршрута (например, накладной оверлей входа), с их бизнес-логикой и экземплярами требуемых объектов?

Я использую React with Flux pattern. Одним из решений, которое я нашел, является создание контроллера без непосредственной привязки к маршрутам. Таким образом, мы будем использовать контроллеры как в обработчиках маршрутов, так и в другом контроллере. В этом случае, как мы можем получить контроллеры из любого места?

Я знаю, что это зависит от случаев использования, но я пытаюсь найти лучшую практику, чтобы иметь четко управляемый шаблон.

Заранее благодарен!

ответ

0

Это довольно открытый вопрос, но я постараюсь ответить на него.

  1. Способ управления зависимостями в Реагировании заключается в передаче их в качестве реквизита. Передавая их в качестве реквизита или передавая данные, которые они управляют в качестве реквизита, получающий компонент не должен знать, откуда они. И вы подталкиваете такой тип принятия решений как можно дальше от иерархии. Таким образом, вы получаете всю эту проводку, централизованную в одном месте, что приятно. Если вы используете react-router, вы должны установить компонент handler для компонента, который только извлекает зависимости и отображает другой компонент, проходящий в необходимых зависимостях.

  2. Наиболее очевидным способом является передача зависимостей, которые компонент входа должен иметь компонент, который отображает компонент входа. Это имеет смысл быть ясным и конкретным, но недостатком является то, что вам нужно передавать эти зависимости повсюду, и их легко пропустить. В React есть что-то, что называется context, которое позволяет дереву компонентов совместно использовать контекст, не передавая его. Вы можете найти больше информации здесь: https://www.tildedave.com/2014/11/15/introduction-to-contexts-in-react-js.html. Другим вариантом является, конечно, соединение компонента входа с необходимыми ему службами, просто импортируя его напрямую. Преимущество в том, что его легче понять, а недостатком является то, что вы связываете компонент со своими зависимостями.

+0

Спасибо за ваш ответ! Мне не нравится реагировать на маршрутизатор, он дает больше ответственности. Реагирование - это ViewModel, он не может управлять маршрутизацией. Я посмотрю, как реагировать на контекст! Спасибо, сейчас! –

+0

Я не согласен.Реагирование - это не ViewModel, это View, и ему нужна ViewModel/Model для визуализации чего-то. Но React не заботится о том, какую модель или версию ViewModel вы используете. –

+0

Хорошо, это правильно, но он не может нести ответственность за управление маршрутом ... –

Смежные вопросы