backbone.js полагается на успокоительные приложения для инициализации моделей, но как насчет прогрессивного улучшения? Данные уже находятся в dom (или некоторые из них), поэтому должны ли мои модели по-прежнему создавать обратный интерфейс, даже несмотря на то, что существуют элементы html? Есть ли другой дизайн библиотеки, который может быть лучше подходит для этого случая?
Имеет ли смысл инициализировать модели из DOM в backbone.js?
Ответ 1
Вам не следует использовать элемент DOM для инициализации вашей модели с использованием данных на сервере. У вас действительно хорошая инфраструктура с основой, чтобы этого не сделать. Когда вы полагаетесь на DOM, вам нужно изменить свой javascript всякий раз, когда структура DOM изменяется из-за дизайна для примера.
Также не следует полагаться на опорный вид, чтобы создать модель. Это должно идти наоборот, модель диктует взгляды на странице.
Просто добавьте элемент script и создайте объекты JS непосредственно там. Вы можете инициализировать коллекции, отдельные модели и т.д.
Вы можете сделать то же самое с шаблонами или структурными блоками DOM UI:
<script type="text/js-template">
<!-- Your template as realy do elements or using a js templating engine like _.template-->
</script>
Загрузите свою страницу и приложите приложение к локальной сети.
Ответ 2
Магистраль может справиться с этим довольно хорошо. То, как я обрабатываю этот случай, - это иметь модель factory, которая может получить DOM node и проанализировать ее, чтобы извлечь данные (id, поля и т.д.).
Если вы предоставите опцию 'el' для конструктор вида, магистраль не будет отображать и не отображать модель, поэтому вы можете сохранить свою node как есть.
После изменения данных контроллер будет синхронизироваться с сервером. Вы должны быть осторожны, чтобы включить любые данные, которые ваше приложение должно использовать, отображалось ли оно или нет.