Когда использовать js framework?

У нас есть сайт ruby ​​on rails, в котором используется большое количество рельсов, созданных в удаленном ajax с js-шаблонами. У нас есть новые требования, которые ведут нас в сторону одностраничного приложения, где целые блоки и столбцы страницы будут основаны на ajax.

Должны ли мы продолжать использовать инфраструктуру ajax в рельсах или начать включать js-структуру, такую ​​как angularjs? Другими словами, каковы основные критерии оценки для определения потребности в js-структуре?

Ответ 1

Лично я думаю, что как только у вас появятся ответы ajax, которые потенциально могут обновить несколько несмежных областей страницы, пришло время представить JS-фреймворк. Сгенерированный сервером javascript (например, то, что дают вам помощники rails) удобен для очень простых вещей, но как только все усложнится, вам лучше будет просто возвращать данные JSON из rails и получать исходные данные из того, что части страницы должны обновляться.

Нет причин, по которым вы должны быть все тем или другим. Вы можете продолжать использовать JS-помощники Rails для простых вещей, но на страницах, где это имеет смысл, добавьте что-нибудь вроде KnockoutJS, Backbone или Angular. Я представил KnockoutJS таким способом в существующем приложении, и оно работало довольно хорошо. Помогло то, что он не зависит от конкретной версии jQuery, а также поддерживает старые браузеры.

Вам нужно решить одну вещь: добавить JS-фреймворк через rubygem или просто загрузить его и добавить в свой конвейер ресурсов. Первый способ может быть проще, но он также свяжет вас с версией, включенной в гем, что может в какой-то момент оставить пару версий позади. Если бы я запускал новое приложение, я бы, вероятно, не использовал ни одного из помощников javascript в rails, и, возможно, даже не конвейер ресурсов, а использовал бы для этого другие инструменты, такие как grunt. Это почти "разделение проблем" с большим количеством предварительной работы, в отличие от "включенных батарей".

Ответ 2

Javascript Framework, такой как Angular, является хорошей идеей, когда вы можете использовать более внутренний JSON API для своего источника данных, сохраняя код rails легче. Если вам приходится много общаться через AJAX, Angular или даже Backbone могут сделать это немного чище. Это действительно сводится к тому, какое приложение вы создаете, как, по вашему мнению, должен быть структурирован интерфейс, и может ли фреймворк помочь с этим.

Поскольку у вас уже есть код в удаленном режиме true с включенным js.erb, вы можете придерживаться этого. Я бы по-настоящему переключился в этот момент, если бы это стало огромной болью. Изменение структуры/архитектуры в существующем приложении может быть довольно трудоемким. Особенно, если вы новичок в angular.

Недавно я работал над проектом на работе, который собирался быть более тяжелым на стороне клиента. В итоге я использовал руль для рендеринга некоторых шаблонов, а затем просто несколько одноэлементных объектов. Причина этого состояла в том, что мы не храним много данных. Просто пара полей в cookie, который выполняется с помощью AJAX-запроса, а затем - одна конечная точка JSON для данных, передняя часть & эти синглтоны используют.

Ответ 3

Если вы ушли с одной страницы, то Rails по-прежнему великолепны как решение для бэкэнда json api. node.js будет довольно быстро, когда вы будете проводить сравнительные тесты, но обменет ли это на радость развитию, например Ruby vs JavaScript, и т.д. Что делать, если вам потребуется еще раз больше времени для перезаписи/разработки кода js, counts...?

Если проект не является не чем-то другим "FB или Youtube thing", я честно считаю, что Rails давно стал основой для корпоративных приложений. Эта более поздняя история, но надеюсь, что вы поняли мою точку зрения. Приветствия

Ответ 4

Я бы использовал:

  • API Rails с rabl gem или подобным.
  • AngularJS.

Вы потратите время на создание API, но перед ним будет проще с фреймворком вроде Angular (я сказал, для приложений такого типа, для одностраничных приложений)