Разделение приложений Angularjs и Rails как автономных компонентов

Я хотел попробовать Angularjs. Тем не менее, я не мог решить, где я должен найти приложение angular.

Я использую структуру Rails для бэкэнд. Я видел учебники, в которых приложение angular работает под папкой assets/javascript.

Мне было интересно, если бы вместо того, чтобы жить в папке assets/javascript, я мог бы полностью жить за пределами моего каталога rails. Таким образом, я могу полностью изолировать свой бэкэнд и интерфейс. (Рекомендуется ли это?).

Я считаю, что конвейер активов также прекомпилирует много активов. Если бы я выделил ресурс angularjs, мне нужно было каким-то образом прекомпилировать активы?

Спасибо

Ответ 1

Вы можете использовать рабочий процесс на основе grunt:

Если вы начинаете с развязанного интерфейса, сначала используйте mocks, чтобы вы могли оставаться в пределах angular и не потерять переключение фокуса между внутренней и внешней логикой. Преимущество построения одностраничного приложения заключается в том, что вы можете развить его независимо от backend api. См. (http://docs.angularjs.org/api/ngMockE2E. $HttpBackend) для информации о насмешливых ответах HTTP.

Ответ 2

Я работал с подобным набором вопросов. Есть несколько хороших инструментов, которые позволяют интегрировать AngularJS прямо в конвейер ресурсов rails, и они для меня выглядят хорошо, если вы хотите только немного Angular.

Однако, если вам нужен полный интерфейс Angular, например, одностраничное веб-приложение, я думаю, что в конечном итоге вы будете ограничены совместимостью и некоторыми инструментами. Я чувствую, что драгоценные камни Rails не справятся с Angular, и поэтому вы столкнетесь с конфликтами версий. Я также видел все больше инструментов для Angular как автономный, и мне очень нравится шаблон проекта ng-boilerplate. Мне также нравится большая часть инструментов для тестирования, таких как карма, и я на самом деле не разбирал способ интегрировать карму с рельсами.

По этой причине я в конце концов решил, что я оставлю их раздельными. Вначале я сделал это, создав приложение rails и отдельное приложение Angular (отдельные каталоги). Я использовал ng-шаблон в качестве рамки для конца Angular. Я написал учебник по этому вопросу. В конечном итоге это немного расстроило, и я написал еще несколько мыслей об этом, основное раздражение заключалось в том, что у меня было два хранилища git, и было очень неприятно держать их в синхронизация. Это также раздражает работу с IDE в двух каталогах. Я перешел на рельсы и Angular, находясь в одной папке, и они, похоже, играют хорошо, так как каждый использует разные каталоги в этом проекте.

В этой текущей структуре я использую настройку grunt, которая поставляется с ng-шаблоном, чтобы минимизировать весь код, упаковать его, а также запустить тестирование модуляции кармы. Я еще не пригвоздил окончательное тестирование, но это в моем списке. Я считаю, что это относительно продуктивная рабочая среда. Моя выбранная структура для моих страниц, контроллеров и тестов кармы имеет несколько повторяющихся кодов (я предпочитаю не учитывать ее, чтобы поддерживать читаемость). Я планирую расширить генератор эскимосских рельсов, чтобы создать фреймворк javascript для меня, поэтому, когда я создаю эскиз для рельсов людей, он также создаст для меня угловую структуру лиц. Я буду обновлять здесь, если и когда я сделаю эту работу.

EDIT: Я также выполнил работу по строительству лесов, что позволяет рельсам автоматически генерировать элементы angularJS при создании моделей/контроллеров рельсов и т.д. Сообщение в блоге находится здесь: <а3 >

Ответ 3

Мы используем AngularJS с нашим Rails-приложением таким образом, чтобы мы использовали шаблоны Rails ERB, но переходим к использованию директивы ng по мере необходимости.

Для этой выше настройки мы использовали bower/bower-rails gem, что позволяет использовать bower для управления пакетами angular и их зависимостей. Мы передаем это в наше репо в каталоге javascripts и заботимся о конвейере Rails.

Эта настройка работала хорошо для нас, учитывая, что мы имеем разделение наших взглядов на 50-50% между шаблонами ERB и Angularjs.

Подробнее об этой настройке в ссылках ниже:

Ответ 4

Есть много преимуществ отделить ваш сервис api (в этом случае рельсы) и ваши интерфейсные компоненты. Как и для приложений ios/android, клиент angular может жить самостоятельно как отдельный объект. Это будет статический веб-сайт, который можно развернуть на s3 или на любом статичном веб-узле. Ему просто нужно общаться с вашим сервисом api. Вы можете настроить CORS, чтобы сделать это возможным.

Некоторые преимущества этого рабочего процесса

  • Вы можете использовать rails-api, который является подмножеством приложения rails. Если вы собираетесь использовать рельсы для создания apis, не имеет смысла иметь всю функциональность, которую предоставляет полное приложение rails. Его легкий, быстрый и более склонный к созданию API сначала арки, чем арка MVC.
  • Вы можете использовать yoman angular -генератор для создания приложения angular и максимально использовать хрюканье и беседу для управления сборкой ( concat, uglify, cdnify и т.д.) и зависимостей (angular).
  • Развертывания станут гибкими. Вам не нужно будет зависеть от одного, чтобы нажать другое.
  • Если вы когда-либо планируете изменить свой внутренний стек (например, рельсы для воспроизведения/воспроизведения), вам не нужно будет беспокоиться о ваших клиентских компонентах.
  • Разделив разработку интерфейса и Rails-сервера, вы можете распределить работу над двумя командами разработчиков и сохранить приложение в целом очень расширяемым.

Существует также один недостаток этого подхода. Имея приложения в двух отдельных репозиториях, вы не можете легко пройти полный тест интеграции. Поэтому вам придется тестировать приложения отдельно. Вы можете высмеять свой apis, чтобы протестировать приложение angular.

Мы использовали этот подход и рекомендовали другим то же самое. Меньшая зависимость и большая производительность.