2009-12-20 3 views
5

Я использовал RJS в прошлом для проектов RoR и чувствовал себя ужасно ограниченным тем, что он мог сделать. Однако, используя только Javascript, он чувствовал/чувствовал себя уродливым и взломанным. Это особенно актуально при написании Javascript, который управляет Rails, автоматически генерируемым из имен переменных. Недавно я не видел много разговоров о RJS в блогосфере. Используется ли RJS в новых проектах RoR или люди решили, что это не эффективно? Разве это активно развивается и расширяется его функциональное покрытие? Я был бы рад узнать о нынешнем состоянии дел.RJS или Javascript?

Итак, кто использует RJS (и как он работает для вас) и кто использует javascript?

ответ

4

Я рекомендую писать прямой javascript. Я считаю, что - да - RJS выходит из моды. Одной из причин этого является популярность библиотеки jQuery для секса. Еще одна модель RJS - в том, что она является рубиновой оболочкой вокруг javascript, поэтому для любой библиотеки javascript, которую вам нужно использовать, вам понадобится соответствующая библиотека обложек ruby, что означает, что вам нужно будет больше работать с ворчанием, другой камень, от которого вам придется зависеть). Кроме того, хотя идея сделать запрос и получить обратно исполняемый javascript хороша, я считаю, что есть многие, кому не нравится этот стиль, или, по крайней мере, не думаю, что это подходит для определенных ситуаций. Я лично изучил javascript и очень понравился, и я рекомендую вам попробовать.

+0

Это тот вид или ответ, который я искал. Были ли какие-либо откровенные разговоры о будущем RJS, на которые я мог смотреть? Если нет, то почему вы чувствуете, что это выходит из моды? Я знаю JS, поэтому я обсуждаю, что использовать для моего следующего проекта. Я могу разобраться в технических и легкоразвивающихся основаниях, которые можно использовать, но я обеспокоен будущим RJS. –

1

RJS никогда не предназначался для замены JavaScript, и вы не должны решать, какой инструмент подходит для работы, основываясь на том, что, по вашему мнению, вы видите, как какой-либо другой ребенок делает в блогосфере.

+0

Не согласен. Если людей не интересует RJS, он не будет продолжать поддерживаться, развиваться, работать и вообще быть видимым. Я бы предпочел не продолжать вкладывать время в работу с ним, если люди больше не используют его. Сообщество RJS является подмножеством сообщества JS, поэтому уже сложно понять, как делать что-то в RJS по сравнению с JS. Если RJS * выходит из стиля *, то я могу представить, что ситуация ухудшается. Так что да, я хочу знать, что делают другие люди и куда они вкладывают свое время и энергию. –

+0

Я думаю, что @NSD было сказать, что вам не следует выбирать конкретную технологию только потому, что ее используют другие люди; однако это не исключает * не использовать его *, потому что другие люди его не используют. –

+0

Правильно, но я попросил, чтобы узнать, не используют ли люди больше. –

2

По RJS, я предполагаю, что вы имеете в виду шаблоны RJS. Вся концепция заключается в том, что вы генерируете JavaScript, который будет запущен в JS-функции eval в браузере как возврат AJAX. Как именно вы «ужасно стеснены тем, что он мог сделать»? Вы можете смешивать Ruby и JS в RJS-файлах различными способами, и это не является более ограничивающим, чем другие форматы типа ERB. Это очень эффективный способ сделать звонки AJAX больше, чем обновление одного <div> (они могут даже обновить два <div> s).

У меня такое чувство, что вы действительно хотите спросить об использовании JavaScript/Prototype/Scriptaculous Helpers. Это так?

+1

Я согласен с Мэттом. Я думаю, что причина, по которой RJS воспринимается как падающая, - это то, что генерирует JS для библиотеки Prototype, если вы не используете плагин, который переопределяет вспомогательные методы, и многие разработчики собирают JQuery. Если вы используете Prototype, то без учета RJS полностью немыслим IMO. –

1

Мне лично не нравятся js, сгенерированные помощниками, поэтому я обычно предпочитаю их не использовать. Однако бывают случаи, когда они довольно удобны.

Существует также замена JQuery, Jrails, если у вас нет вентилятора Prototype.

Но, я должен согласиться с NSD. Почему вы позволите другим делать в конечном итоге свой путь. Если вам не нравится, как работают помощники, или они не делают этого для вашего проекта, не используйте их. Или, если ему что-то не хватает, напишите сами. И, возможно, в этом вы можете разжечь какое-то вмешательство.

Что касается время инвестирования, это знание.

4

Мне нравится использовать RJS для простых задач, как:

page["post_#{@post.id}"].replace :partial => @post 
page["post_#{@post.id}"].highlight 

Да, вы можете сделать это непосредственно с функцией link_to_remote, но только загромождает ваш взгляд с кодом, или с update_page в контроллере , но это уродливо. rjs позволяет вам писать более понятный код, который не связан с какой-либо библиотекой javascript (так как там есть такие вещи, как jrails, или вы можете просто переопределить методы Rails самостоятельно.)

Если у вас есть действительно сложная функция javascript для вашего приложения, вам, скорее всего, будет лучше служить, написав javascript самостоятельно, так как в этот момент вы не захотите полагаться на абстракции, которые предоставляет Rails.