В настоящее время я разрабатываю приложение, которое будет иметь несколько разных страниц, и каждая страница будет иметь компоненты, которые обновляются через AJAX. Макет аналогичен новому дизайну Twitter, где «Дом», «Обнаружение» и «Подключение» являются отдельными страницами, но для взаимодействия на странице (например, нажав «Подписчики» или «Следующие») используется AJAX.
Поскольку дизайн требует начальной загрузки страницы с несколькими компонентами (в контексте Twitter: твиты, подписчики, подписки), каждый из которых можно обновлять по отдельности через AJAX, я подумал, что было бы лучше иметь контроллер по умолчанию для обслуживания страниц и других контроллеров с действиями, которые, вместо того, чтобы обслуживать полные страницы, строго обрабатывают запросы к базе данных и возвращают объекты JSON. Таким образом, при начальной загрузке страницы можно выполнить несколько запросов HMVC для сбора данных для каждого компонента, а также можно выполнить вызовы AJAX для обновления каждого компонента по отдельности.
Моя идея состоит в том, чтобы иметь Controller_Default, который обрабатывает обслуживающие страницы. В контексте Twitter Controller_Default будет содержать:
action_home()
action_connect()
action_discover()
Тогда у меня были бы другие контроллеры, которые не имеют дело с полным обслуживанием страниц, а скорее с компонентами страниц. Например, в контексте Twitter Controller_Tweet может иметь:
action_get()
, который возвращает объект JSON, содержащий твиты для определенного пользователя. Затем Action_home () может сделать несколько запросов HMVC, чтобы получить данные для нескольких различных компонентов страницы (то есть сделать запросы для «твит / получение», «последователи / получение», «следование / получение»). В то время как на странице, однако, AJAX-вызовы могут быть сделаны для определенных функций контроллеров (то есть 'tweet / get'), чтобы обновить содержимое.
Мой вопрос: это хороший дизайн? Имеет ли смысл отправлять страницы через контроллер по умолчанию, а компоненты страниц (в формате JSON) - через другие контроллеры функций?
Если есть какие-либо сомнения относительно вопроса, пожалуйста, не стесняйтесь спрашивать разъяснения!