AngularJS очень эффективен, когда дело доходит до интерактивного HTML5 и привязки к модели. С другой стороны, фреймворки PHP, такие как Yii, обеспечивают быструю, хорошо структурированную, безопасную и мощную разработку веб-приложений. Обе технологии предоставляют сложные средства для доступа к данным, итерации и макетирования страниц.
Хорошая или плохая практика заключается в смешивании этих двух подходов (настройка страницы на стороне клиента и на стороне сервера) или это скорее противоречит смыслу интерактивных, бесшовных веб-приложений HTML5 AJAX?
Я не говорю о создании JS с использованием PHP ( см. Этот вопрос ). Я говорю о создании представления, которое будет использовать AngularJS.
Я также знаю, что страница AngularJS должна (или может) связываться с сервером через службы REST для получения данных ( см. Этот вопрос ) вместо того, чтобы напрямую извлекать их из, например, переменных PHP. Но для меня кажется более удобным создать «фрейм» для всего веб-приложения отдельно в PHP (например, создать главное меню или обработать авторизацию / сеансы и т. Д.),
Кажется, вам может быть удобнее разрабатывать в PHP, что вы позволите этому удержать вас от использования полного потенциала с помощью веб-приложений.
Вполне возможно, что PHP-рендеринг частичные и целые представления, но я бы не рекомендовал его.
Чтобы полностью использовать возможности HTML и javascript для создания веб-приложения, то есть веб-страницы, которая больше похожа на приложение и в значительной степени зависит от рендеринга на стороне клиента, вы должны подумать о том, чтобы позволить клиенту поддерживать всю ответственность за управление состоянием и презентацией. Это будет проще в обслуживании и будет более удобным для пользователя.
Я бы порекомендовал вам более удобное мышление в более ориентированном на API подход. Вместо того, чтобы PHP выводить предварительное визуализированное представление и использовать угловые для простой манипуляции с DOM, вы должны подумать о том, чтобы на PHP-сервере выводились данные, которые должны быть задействованы RESTFully, и иметь Angular.
Использование PHP для визуализации представления:
/user/account
if($loggedIn) { echo "<p>Logged in as ".$user."</p>"; } else { echo "Please log in."; }
Как эта же проблема может быть решена с помощью подхода, ориентированного на API, путем вывода JSON следующим образом:
api/auth/
{ authorized:true, user: { username: 'Joe', securityToken: 'secret' } }
и в Angular вы можете сделать get и обработать клиентскую часть ответа.
$http.post("http://example.com/api/auth", {}) .success(function(data) { $scope.isLoggedIn = data.authorized; });
Чтобы сочетать как клиентскую, так и серверную сторону, предложенный вами способ может быть подходящим для небольших проектов, где обслуживание не имеет значения, и вы являетесь единственным автором, но я больше склоняюсь к ориентированному на API способу, поскольку это будет более правильное разделение интересов и будет быть проще в обслуживании.