При работе с Backbone.js у вас должна быть куча моделей на клиенте, которые получаются с сервера и обновляются на сервере через REST api (CRUD). Клиент отвечает за MVC, и сервер просто отвечает на кучу простых запросов, удаляет и обновляет.
Это означает, что клиент, вероятно, содержат код:
- Модели
- Просмотров
- Router
- шаблоны (HTML)
- Коллекции
- Utils
- Сторонняя Lib s
Сервер будет:
- Schemas (для моделей, которые должны быть сохранены в БД)
- Модели
- Utils
- код сервера для успокоительного ответа апи (например express.js)
- ЛИЭС
... Так какой код должен быть разделен между клиентом и сервером? некоторых утилиты, возможно, модели .... (Хотя я думаю, что модели кода не должно быть разделена)
В принципе, хотя мы (разработчики) все возбуждаются обмен кодом между клиентом и сервером, Прецедент и роли и обязанности на самом деле не требуют такого сочетания. (по крайней мере, это то, что случилось со мной)
Кстати, есть некоторые исключения, в которых вы хотели бы реализовать тот же MVC на сервере для быстрой рендеринга и соответствия поисковых систем, airBnb делает это с помощью магистрали и узла ,и они с открытым исходным кодом там решение, как только они стабилизируют API
EDIT:
Из моего опыта Backbone модели довольно тонкие данные только объекты (и некоторый код проверки). Зрители наблюдают за ними и меняют их, поэтому большая часть кода идет туда. Я думаю, что в этом случае развязка кода с сервера на клиента является хорошим дизайнерским решением, он позволяет вам играть с вашими схемами БД без изменения клиента.
Но, конечно, это может быть различным в других случаях использования ...
Что касается вашего актуальный вопрос:
Вы можете проверить AirBnB проект Rendr: (https://github.com/airbnb/rendr)
Rendr - небольшая библиотека от Airbnb, которая позволяет легко запускать приложения Backbone.js как на клиенте, так и на сервере. Позвольте веб-серверу обслуживать полностью сформированные HTML-страницы для любой глубокой ссылки вашего приложения, сохраняя при этом мгновенное ощущение традиционного приложения MVC на стороне клиента Backbone.js.
Я думаю, что вы делаете хороший пример для приложений с «тонким сервером», где API - это немного больше, чем постоянство и логика контроллера для хранилищ данных и других сторонних служб. Но что делать, если бэкэнд-сервис должен работать с моделями, чтобы отвлечься от них? – metalaureate