Какую структуру приложения использовать с AngularJS и Laravel?

30

Недавно я начал строить большую социальную сеть, и я думал, что моя структура хороша, но оказалось, что я неправильно построил эту логику.

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

В настоящее время я просто обрабатываю проверки формы с помощью angular, но на самом деле для всех страниц моего сайта требуется ajax, вытягивание данных и т.д.

Я искал сеть, и я увидел, что представления angular хранятся в общей папке, но поскольку все мои страницы будут использовать angular, это хорошая идея сохранить все мои взгляды публично, и просто использовать Laravel в качестве задней части?

Я знаю, что это глупый вопрос, но я немного смущен.

Любые подсказки помогут оценить.

  • 1
    Я думаю, что поскольку вы используете ng-view для рендеринга партиалов и определенно будете использовать заводские данные извлечения, то в этот момент учитывается $ http, и определенно в этот раз вы будете использовать некоторую проверку для извлечения данных из laravel. Я думаю, что как Angular It сама MV * Framework, вам нужен laravel, чтобы определить другой маршрут! Проверьте stackoverflow.com/questions/15623967/…
Теги:
web-applications

3 ответа

20
Лучший ответ

Существует два способа объединения этих фреймворков:

  • Только рендеринг на стороне клиента

    Это более простой способ и используется большинством веб-приложений. В этом случае вы должны использовать Laravel в качестве конечной точки API, которая вернет JSON. Angular может запрашивать эти данные через службу $http или $resource и компилировать шаблоны, которые вы храните в общей папке. Angular шаблоны - это просто HTML с директивами и некоторыми {{var}} операторами. Таким образом, Angular выполняет всю маршрутизацию.

  • Отправка на стороне сервера и на стороне клиента

    Это труднее, когда Laravel выполнил маршрутизацию и скомпилировал некоторые шаблоны на стороне сервера. Вы использовали бы Angular только для некоторых взаимодействий на сайте так, как если бы вы использовали jQuery. Преимущество такого подхода - производительность, так как пользователи получат полный HTML-код при первом посещении вашего сайта. Недостатком является то, что вам, возможно, придется дважды написать некоторую логику и не использовать некоторые из функций Angular.

  • 7
    Я рекомендую для разрешения «записи логики дважды», вы можете изучить «Шаблон репозитория», что означает два контроллера (один для API, другой для серверных шаблонов), и оба они могут использовать Репозиторий, чтобы выступать в качестве посредника для базы данных. слой. Я использую # 2 в качестве архитектуры для моего собственного сайта. Есть внутреннее «одностраничное приложение» (SPA), которое использует визуализацию на стороне клиента. Резервным вариантом является рендеринг на стороне сервера, для статических страниц и некоторых областей управления пользователями.
  • 0
    @Maximilian Hoffmann, какой из этих вариантов лучше всего подходит для SEO?
Показать ещё 2 комментария
12

Чтобы на самом деле воспользоваться большинством функций angular, вы должны написать одностраничное приложение. Это означает, что вы будете общаться с сервером через веб-API, и у вас не будет никаких шаблонов сервера Laravel.

Итак, да, вы должны написать два развязанных приложения. Одна клиентская сторона, используя angular и одну серверную сторону, которая предоставляет веб-API, предпочтительно RESTful.

Таким образом, вы можете переключиться с JS/HTML/CSS на стороне клиента на Flash или Silverlight или на что-то еще и с Laravel/PHP/MySQL на .NET или NodeJS или Meteor/MongoDB.

  • 0
    спасибо вам за помощь :)
7

Серджиу прав, но в некоторых случаях Laravel по-прежнему предлагает преимущества, которые не могут быть достигнуты с помощью клиентских шаблонов. Это связано с SEO и WCAG (доступность).

AngularJS отображает контент посредством манипуляций с DOM, поэтому поисковые системы не могут определить, какой контент отображается после завершения этих манипуляций. Это также относится к устройствам чтения с экрана. По этой причине некоторый контент должен быть доставлен с помощью конструкций с видом на сервер. Вот почему Wordpress и Laravel имеют длительный и здоровый фьючерс.

В фокусе или в тех случаях, когда SEO и WCAG не важны, шаблоны на стороне клиента, связанные с привязкой данных, такие как те, которые используются с AngularJS и Ember, будут использоваться все чаще, поскольку все больше разработчиков узнают, как их использовать.

В отношении того, следует ли использовать конструкции AngularJS или Laravel для представлений, было бы лучше узнать, как использовать их и применять там, где они наиболее подходят.

  • 4
    Я более склонен думать, что серверный JavaScript (например, NodeJS) - это будущее, где вы пишете единую кодовую базу для всего вашего приложения, но запускаете ее в двух контекстах: браузер для обычных пользователей и сервер для сканеров. Но да, это настоящая проблема прямо сейчас.
  • 0
    Три года спустя. Теперь у нас есть React (и другие) с изоморфным рендерингом в качестве хорошего решения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню