У Rails есть средство для обновления своего уровня представления через js файлы и js.erb файлы, каковы некоторые из конкретных преимуществ использования фреймворка, такого как Backbone.js?
Зачем использовать Backbone.js с Rails?
Ответ 1
Вот несколько причин:
1) Магистраль была построена специально с учетом Rails и легко интегрируется с помощью backbone-on-rails, Хотя модели Model-View-View Model (MVVM) Knockout и Angular могут быть легко включены в приложение Rails довольно ненавязчиво, архитектура Backbone MVC обеспечивает уровень организации, который действительно кажется необходимым, если ваше приложение имеет много асинхронной страницы обновления. Возьмите эту страницу для быстрого примера:
Если вы создавали этот вопрос в Rails, у вас был бы ваш вопрос show.html.erb, question_show.js, show.js.erb и все другие файлы js.erb, которые относятся к асинхронному обновлению содержимого на эту страницу (такие действия, как голосование вверх/вниз, одобрение, комментирование и т.д.).
В Backbone, представление не является шаблоном разметки, таким как show.html.erb, вместо этого он содержит весь соответствующий код для этого ресурса разметки в одном месте. Таким образом, вместо определения всех ваших прослушивателей событий в удаленном файле question_show.js и обработки всех ваших обновлений AJAX в различных файлах js.erb, все прослушивание и публикация событий, относящихся к вопросам, показывающим ресурс, содержится в одном месте, вопрос о макете показать вид. Конечно, комментарий может иметь свой собственный взгляд и комментарии к их собственной коллекции, а также другие элементы MVC, о которых я не упоминаю. Но, тем не менее, Backbone помогает вам определить внешние ресурсы.
2) Выбор фреймворка JavaScript, такого как Backbone, помогает взять часть загрузки с вашего сервера для кода, который действительно не нужно выполнять на стороне сервера. Зачем визуализировать все ваши элементы разметки в шаблонах html.erb на сервере, когда это можно сделать в клиентском браузере. В ответ на вопросы безопасности у вас есть возможность присваивать атрибуты объектам базы данных whitelist/blacklist при форматировании объекта базы данных как JSON и отправке его клиенту.
3) Магистраль (в частности), похоже, дает большую свободу. Он предоставляет набор соглашений, которые помогут организовать ваше приложение, но в конце концов это ваша структура, которую вы разрабатываете. Структура MVC Backbone менее односторонняя, чем Rails, но устойчивые соглашения сохраняются.
4) С Backbone (не говоря за или против других фреймворков) pushState легко внедряется в структуру, которая ожидает его использования. Тем не менее, pushState имеет свои недостатки с точки зрения искателей, обращаясь к вашему контенту, и требует, чтобы часть рендеринга на стороне сервера включалась в удобное для пользователя средство. Однако, что здорово, что вы можете достичь той же истории/разлагаемости при использовании Backbone out-of-box; их фрагменты url позволяют использовать ту же функциональность, у них просто есть лишний №.
Существует множество других причин использовать фреймворк, такой как Backbone, и действительно кажется, что существует много альтернатив, потому что одна структура не подходит для всех. Но для того, что я могу подтвердить, Backbone, кажется, отличная структура, если вы создаете приложение с нуля. И это также кажется очень выполнимым, если вы хотите включить его в существующее приложение.
Источник: Backbone.js on Rails