Ответ 1
Я действительно работаю в той же ситуации прямо сейчас (хотя с Python/Flask, но те же понятия должны применяться к любому серверному языку). Вот как работает рабочий процесс для моей страницы. Просто обратите внимание, что я НЕ выполняю формат одностраничного приложения; в моем приложении каждая основная страница является полной перезагрузкой.
- Пользователь запрашивает страницу, скажем, список компаний,/компании/листинг/
- Сервер выполняет маршрутизацию, загрузку правильного контроллера
- Контроллер загружает первые X-компании из БД
- Компании кодируются как JSON
- Загружаются другие метаданные (например, общее количество компаний) и превращаются в JSON
- Загружается шаблон страницы списка, и JSON выскочил в <script> тег в шаблоне. Обратите внимание, что здесь я не заполняю таблицу листинга или что-то в этом роде, я позволяю Backbone делать все это. Я заполняю JSON здесь, поэтому клиенту не нужно делать второй запрос для первоначального набора компаний.
- Страница списка отправляется клиенту. На данный момент сервер выполнен
- У клиента есть все необходимые ему данные, поэтому я беру JSON и передаю его в свой Backbone.View для страницы с листингом
- Представление создает коллекцию для моделей и управляет набором под-представлений, которые представляют записи в списке
- Любая другая обработка/просмотр создается, например, создание страниц, предыдущие/следующие кнопки и т.д.
- Если пользователь нажимает на следующую страницу компаний, я запускаю запрос AJAX на сервер (/companies/listing/page/1 или что-то еще), который возвращает новую строку JSON с новым набором моделей
- Отправьте новый набор моделей в мой Backbone.View, который обновляет все.
Таким образом, сервер используется только для фактической загрузки данных и начальной отправки шаблона. Мне это нравится, потому что это позволит мне легко подключить новые интерфейсы (скажем, приложение для iPad или что-то еще).
Для формы, в действительно широких штрихах, я делаю что-то вроде этого:
- Форма запроса пользователя/компании/изменить/1
- Сервер выполняет проверку разрешений, загружает запись, отправляет шаблон /JSON клиенту. Сервер не заполняет форму данными
- Клиент использует JSON для заполнения формы
- Клиент изменяет форму, попадает в submit
- Все их изменения применяются к модели, модель превращается в JSON и отправляется на сервер с помощью AJAX
- Сервер выполняет проверку и отправляет сообщения об ошибках (в JSON) клиенту или обновляет базу данных и отправляет успешное сообщение
Итак, опять же, это действительно широкие мазки, как я это сделал. В общем, я использую сервер для захвата данных из базы данных, проверки на стороне сервера (не могу доверять клиенту heh) и обновлять базу данных.
Если у вас есть какие-то конкретные вопросы, я был бы рад попытаться поделиться тем, что я узнал до сих пор.