Фреймворки Javascript MVC и фреймворки на стороне сервера - PullRequest
10 голосов
/ 10 ноября 2011

Этот вопрос касается совместного использования двух платформ MVC (на стороне клиента и на стороне сервера).

Некоторые сведения: Я довольно новичок в веб-разработке, ноЯ очень опытный программист.Я изучил javascript и Django только недавно.Внешний интерфейс для моего приложения довольно обширный, и поэтому я решил использовать фреймворк.В настоящее время я читаю о доступных фреймворках и склоняюсь к backbone.js + jquery.

Моя проблема в том, что я не до конца понимаю, как инфраструктура MVC, такая как backbone.js, может сосуществовать с инфраструктурой на стороне сервера, такой как Django.

Из того, что я понял о backbone.jsпри изменении модели соответствующие виды, связанные с моделью, автоматически обновляются.Здесь мы имеем в виду «взгляды» клиентской части, верно?Будет ли такой «вид» связываться с «контроллером» бэкэнд-фреймворка?

Каким будет возможная структура каталогов?Это плохая архитектура?

Имеет ли вопрос смысл?или я потерян?

Редактировать: Чтобы внести некоторую ясность: я предполагаю, что мой основной вопрос заключается в следующем: как сложное одностраничное веб-приложение JS будет структурировано на стороне клиента (особенно есливы используете фреймворк на стороне клиента)?В частности, мне любопытно, как правильно структурировать приложение с точки зрения его объектов модели, компонентов пользовательского интерфейса, любых контроллеров и объектов, обрабатывающих постоянство сервера.

1 Ответ

8 голосов
/ 10 ноября 2011

Я могу говорить с точки зрения Rails / Backbone, но не могу себе представить, что Django будет сильно отличаться.

Во-первых, клиентская MVC-инфраструктура, такая как Backbone, предназначена не только для одностраничных страниц.Программы.Вы также можете использовать его, чтобы добавить богатое взаимодействие к одному или нескольким представлениям более традиционного приложения.Они просто предоставляют структуру и абстракции данных на клиенте.

Далее, эти клиентские инфраструктуры разработаны специально для работы с вашими внутренними инфраструктурами MVC.Модели и коллекции Backbone.js (так как вы отметили это специально) работают со службами REST.Они будут общаться с помощью команд GET / POST / PUT / DELETE и в конечном итоге будут взаимодействовать с вашими контроллерами на стороне сервера при выполнении асинхронных запросов.

В случае Backbone он говорит JSON вместо HTML.В случае с Rails это действительно легко обрабатывается в контроллере.Если запрос HTML, вы возвращаете представление как HTML.Если это запрос JSON (* .json или Content-type), то контроллер возвращает JSON-представление данных.Я предполагаю, что в Django так же легко, как и в Rails, иметь один и тот же контроллер, отвечающий на несколько запросов контента (HTML, XML, JSON и т. Д.)

...