2013-07-01 2 views
3

Я новичок с nodejs, но я очень рад возможности общего языка и идиомы между клиентом и сервером.Как воспроизвести модели Backbonejs & Collections на стороне сервера node.js

Кто-нибудь знает об инфраструктуре nodejs, которая предоставляет те же функциональные возможности и функциональность OO для моделей, которые мы используем на клиенте с backbonejs? Я нахожу это jarring для переключения между базовыми моделями и коллекциями и ручными классами javascript в узле.

Контроллеры заменены эмиттерами и обратными вызовами, и, конечно же, нет представлений, но я не прав, если хочу, чтобы последовательная парадигма OO для клиентов моделей и серверов? Должен ли я использовать ОНОП-агностику базы данных для достижения этой цели, такой как Редис?

Если этот вопрос слишком расплывчатый для SE, не стесняйтесь меня закрывать.

ответ

5

При работе с 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.

+0

Я думаю, что вы делаете хороший пример для приложений с «тонким сервером», где API - это немного больше, чем постоянство и логика контроллера для хранилищ данных и других сторонних служб. Но что делать, если бэкэнд-сервис должен работать с моделями, чтобы отвлечься от них? – metalaureate

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