Рубин на стороне сервера против скорости / организации js api на стороне клиента - PullRequest
0 голосов
/ 14 февраля 2012

Скажем, у меня есть определенные строковые атрибуты объекта AR, например, «имя файла» и «заголовок», и способ, которым я хочу динамически заполнить поле выбора на внешнем интерфейсе, заключается в ajax в представлении JSON этого объектаи либо отобразить заголовок attr в качестве текста опции выбора, если он существует, либо использовать имя файла attr в качестве текста опции выбора, если заголовок attr пуст.Теперь я должен выполнить логику this-else-that, которую я только что описал на стороне сервера, и вернуть ее в JSON-представлении моего объекта как нечто вроде атрибута display_name, или я должен возвращать ванильное представление as_jsonобъект, содержащий только атрибуты AR и включенные, позволяет js принять решение, отображать ли атрибут attr или attr имени файла в качестве текста опции выбора?Из того, что я могу сказать, JS намного быстрее, чем ruby, но в то же время кажется более приемлемым поддерживать эту логику на стороне сервера.Я также хотел бы знать, в целом, выполняется ли логика быстрее на стороне клиента w / js или на стороне сервера w / ruby?Спасибо!

Ответы [ 2 ]

0 голосов
/ 16 марта 2019

Моя рекомендация - поместить логику туда, где она есть. Если логика о представлении / рендеринге, то я бы поместил ее в ваш уровень представления. Из вашего описания это, кажется, ваш JS на стороне клиента.

Я рекомендую вам как можно больше следить за тем, как их данные отображаются / представляются. Это позволит вам изменить ваши представления без необходимости также изменять структуру полезной нагрузки, возвращаемой API.

По моему опыту, уровни представления имеют тенденцию меняться чаще, чем базовая структура данных, которые они представляют. Я согласен с предыдущим ответом, я не буду беспокоиться о скорости здесь, и пойду на четкое разделение проблем.

0 голосов
/ 14 февраля 2012

Вам действительно не нужно слишком беспокоиться о скорости - очень маловероятно, что вы действительно будете страдать от проблем с производительностью, вызванных операторами if / else, если вы не делаете что-то не так.

Вместо этого идите для ясности и простоты. В этом случае это, вероятно, означает визуализацию страниц на сервере напрямую, если по какой-то причине данные уже не находятся в JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...