2012-03-18 7 views
2

Будучи некоторые случайные рельсы Дев, и обходящий все эти остов/подчеркивают материал яваскрипта ...Backbone против RJS

Backbone кажется интересным, но в функциональной точки зрения (я имею в виду, как вы можете получить ваши данные обратно от db и ваша страница может быть обновлена), я не вижу никакой реальной причины двигаться вперед к позвоночнику. Я говорю, по сравнению с рейсами RJS.

С основой, на стороне клиента происходит больше вещей; но не вижу никакой принципиальной разницы, кроме этого факта

обратная связь Любой магистральной-евангелиста оценили

ответ

1

Это определенно будет вопрос предпочтений, но вот несколько бессвязных, почему Вы могли бы хотеть пойти с чем-то вроде Магистраль над чем-то вроде RJS.

RJS отлично подходит, когда вам просто нужно вернуть код, например $('#post_#{@post.id}').slideUp() или что-то в этом роде. Если вы хотите, чтобы бэкэнд напрямую контролировал интерфейс. Это, безусловно, имеет смысл для многих приложений. Но когда вы начинаете входить в более сложные вещи: измените название сообщения, измените тело сообщения, измените теги сообщения, измените заголовок сообщения на боковой панели «последние сообщения» и т. Д. Это может стать затруднительным для быстрого поддержания. Если вы измените тонкую разметку, вы можете сломать все свои RJS. Кроме того, с помощью RJS довольно сложно изменить всю страницу и сохранить работоспособность пользователя (например, вы отключаете кнопки и обычно топаете по всему состоянию в браузере).

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

  • Вы будете накладывать меньше нагрузки на свой сервер, так как клиент будет выполнять большую работу рендеринга.
  • Вы изменяете какую-либо разметку в шаблоне на стороне клиента, естественно и просто изменить соответствующий Backbone.View, если есть изменения, чтобы сделать там, а не внизу потенциальных действий контроллера в Rails.
  • Вы можете легко управлять навигацией между несколькими страницами/состояниями и сохранять эту логику на клиенте.
  • Это очень легко и с низким барьером организовать ваш JavaScript строго в то, что имеет смысл для вашего приложения (например, collections.js, models.js, views.js, или, может быть app.js для меньших вещей, или, может быть, post_view.jsposts_collection.js ... все, что вам нужно) ... снова, вместо того, чтобы javascript распространился на процедурные фрагменты по всему Rails.

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

Приложение Rails может больше походить на API, который может использовать любое количество интерфейсных интерфейсов - базовый для Интернета, приложение для iPhone и т. Д.

Несомненно, есть и недостатки. Вы должны написать хотя бы часть логики представления/контроллера вашего приложения в сценарии Java (/ Coffee), и вы должны быть осторожны, когда вы не перезагружаете страницу в течение длительного времени, чтобы не вызывать утечки памяти и ошибки JavaScript, которые может убить ваше приложение. Когда речь идет не о компромиссах, так?

Высокий пример профиля кого-то не используя Backbone, когда он в противном случае можно было бы считать хорошей идеей, можно найти на этом 37signals post about Basecamp Next (и соответствующий HN discussion).

Сообщите мне, если я могу что-то разъяснить для вас.

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