Rails 3 UJS Ajax шаблон / стратегия, какая из них лучше? - PullRequest
3 голосов
/ 07 июня 2011

Компания, в которой я работаю, недавно перешла с Rails 2 на Rails 3, за тот же период мы также перешли с rjs на jquery.Мы внедряем новый шаблон, предназначенный для улучшения повторного использования вида.Я буду использовать edit / update в качестве примера, чтобы проиллюстрировать новый и старый способ выполнения AJAX в проекте:

A. Старый способ - Редактировать шаблон действия не отображает клиенту какую-либо специфичную для обновления логику JavaScript.Шаблон обновления отображает как HTML-контент, так и действие (замените элемент).это очень похоже на подход RJS, но в jQuery.

Плюсы:1. HTML-контент AJAX и код JavaScript, который выполняет манипуляции с DOM, организованы в одном файле .rb, просты в обслуживании.2. Просмотр спецификаций позволяет проверить, правильно ли отображался код JS для манипулирования DOM при обновлении ответа AJAX.

Минусы:1. Поскольку html-контент и js-код связаны и предполагают определенную структуру DOM на целевой странице, повторное использование на другой странице сложнее.

B. Новый способ - шаблон действия обновления для запроса AJAX возвращает только документ JSON, который содержит экранированный HTML-контент.js-код, который управляет DOM, отображается из шаблона действия редактирования и прослушивания виртуального события AJAX: успех / ошибка.Таким образом, контент и поведение разделены.

Плюсы:

  1. AJAX html-контент и javascript (поведение) отделены друг от друга, поэтому контент можно настраивать и манипулировать немного по-разному на разных страницах.

Минусы:

  1. HTML-контент и JS-код теперь организованы в 2 разных файлах (JS в шаблоне действия редактирования, HTML-контент в шаблоне действия обновления), его сложнее поддерживать, чем раньше.

  2. Мы больше не можем легко тестировать поведение представления - шаблон обновления теперь отображает только HTML-контент AJAX, но код, управляющий им, находится в другом представлении(edit).

  3. Поскольку ответ находится в формате JSON, мы больше не можем использовать формат, чтобы определить, ожидает ли клиент обёртывание html в JSON или просто вызов API JSON.

    Это то, чему я научился до сих пор, мне интересно, может ли кто-то с большим опытом в этой теме пролить некоторый свет на этот вопрос - какой подход лучше в целом и как их улучшить.

Спасибо!

-Сяотянь

1 Ответ

0 голосов
/ 05 декабря 2011

jQuery's ajax & rabl для генерации json

...