Давайте поговорим о том, что такое RJS, прежде чем говорить о том, зло это или нет.
RJS применяет тот же уровень абстракции к высокофункциональным библиотекам Javascript, что и ActiveRecord для SQL. Однако покрытие RJS для библиотек Javascript далеко не так полно, как покрытие адаптеров SQL ActiveRecord.
Rails поставляется с поддержкой RJS только для Prototype/Script.aculo.us. Однако существуют плагины, доступные или находящиеся в разработке, для поддержки других библиотек Javascript. Например, JRails переписывает помощники на основе прототипа для работы с jQuery. Подобные плагины существуют для mootools и, возможно, для Dojo.
Люди, которые считают RJS злом, как правило, это те, кому не нравится, когда с его помощью создается код прототипа, или те, кто считает, что с помощью необработанного Javascript можно добиться большего.
RJS не идеален, так же как ActiveRecord не идеален, время от времени вам приходится опускаться до написания сырого Javascript или SQL, чтобы выполнить свою работу. Опять же, как и в случае с ActiveRecord, чем удобнее вы будете пользоваться расширенными параметрами, тем больше вы сможете сделать без написания необработанного кода.
Одна замечательная особенность RJS заключается в том, что они по сути являются представлениями, которые создают Javascript. Очень легко извлечь RJS в партиалы, которые могут быть включены по мере необходимости либо как ответы контроллерам, либо как часть пользовательских функций Javascript, включенных в страницу. Это делает код более СУХИМ, что упрощает обслуживание.
Лично я часто использую RJS. Я считаю, что это идеальный способ коснуться множества элементов DOM одновременно. Он поставляется с двойным бонусом, позволяющим мне создавать сайты с поддержкой AJAX без написания большого количества Javascript. С другой стороны, я ненавижу писать Javascript.
person
EmFi
schedule
20.11.2009