Какая инфраструктура Javascript MVC лучше всего обрабатывает реляционные данные? - PullRequest
4 голосов
/ 30 августа 2011

Я впервые попробую использовать JavaScript MVC-фреймворк, такой как Knockout , Backbone.js , Spine , JavaScriptMVC и т. Д.

Я начал просматривать некоторые документы, доступные для этих сред, и у меня возникают проблемы с поиском примеров того, как они обрабатывают реляционные данные.Большинство из них используют список дел в качестве примера.Список ToDo хорош, но он не охватывает реляционные данные.Возможно, лучшим примером была бы поваренная книга с моделью для рецептов и ингредиентов:

var Recipe = function(){
   this.name = "Pizza";
   this.description = "A delicious baked, flat, disc-shaped bread topped with tomato sauce and cheese.";
}

var Ingredient = function(){
   this.name = "Tomato sauce"
}

var IngredientToRecipe = function(){
   this.recipe = null;
   this.ingredient = null;
   this.quantity;
}

Примеры для моделей, которые я видел до сих пор, похоже, не имеют отношения к проблемам отношений: внешние ключигенерация идентификаторов и т. д. Приведенный выше пример является отношением многие-ко-многим, но я был бы рад поддержке даже отношений один-ко-многим.

Мне действительно нравятся вещи, предоставляемые этими структурами:

  • изменения в моделях автоматически обновляют представление (т. Е. DOM)
  • , автоматически обновляя модель на сервере при ее изменении
  • очистить организацию кода
  • и т.д ...

Но я хотел бы получить совет о том, какая структура лучше всего обрабатывает отношения между моделями, и есть пример, где это делается.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 31 августа 2011

Хотя Backbone ( намеренно ) не поддерживает модели, содержащие другие модели / коллекции, очень изящно, Backbone-реляционный добавляет поддержку и работает довольно хорошо. Ознакомьтесь с их документацией.

1 голос
/ 30 августа 2011

Sproutcore имеет хранилище данных на стороне клиента, которое позволяет связывать различные объекты модели друг с другом в отношениях toOne, toMany и ManyToMany.Вы можете написать запросы к хранилищу, которые автоматически обновляются при изменении данных.Точно так же, если вы делаете обновление, и объект модели изменяется, любые представления, присоединенные к этой модели (через контроллер), будут автоматически обновляться).Кроме того, SC имеет функцию вложенного хранилища, которая позволяет беспрепятственно отказаться от изменений для рабочих процессов типа «сохранить или отменить».

http://guides.sproutcore.com/records.html

0 голосов
/ 31 августа 2011

Я не думаю, что вы ищете MVC как таковой, я думаю, что вы ищете что-то с хорошей буквой "М". Так что вы можете искать что-то вроде нашей ассоциации моделей Ext JS. (Ext JS, конечно, полнофункциональный фреймворк, поэтому, если вы хотите посыпать что-то поверх jQuery, это не для вас.)

Вот документация для моделей в Ext JS 4 , а вот руководство по верхнему уровню для Ext JS 4 MVC

...