AngularJS를 PHP 프레임 워크와 혼합해야합니까? [닫은]


161

AngularJS는 대화식 HTML5 및 모델 바인딩과 관련하여 매우 강력합니다. 반면, Yii와 같은 PHP 프레임 워크는 빠르고 체계적이고 안전하며 강력한 웹 응용 프로그램 개발을 가능하게합니다. 두 기술 모두 데이터 액세스, 반복 및 페이지 레이아웃을위한 정교한 수단을 제공합니다.

이러한 두 가지 접근 방식 (클라이언트 측 및 서버 측 "페이지 설정")을 혼합하는 것이 좋거나 나쁜 습관입니까? 아니면 대화식의 완벽한 HTML5 AJAX 웹 응용 프로그램의 의미에 반대하는 것입니까?

PHP를 사용하여 JS를 생성하는 것에 대해 이야기하고 있지 않습니다 ( 이 질문 참조 )-AngularJS를 사용할 뷰를 생성하는 것에 대해 이야기하고 있습니다.

또한 AngularJS 페이지는 REST 서비스를 통해 서버와 통신하여 PHP 변수와 같은 데이터를 직접 검색하는 대신 데이터를 가져와야합니다 ( 이 질문 참조 ). 그러나 나에게 PHP로 전체 웹 응용 프로그램의 "프레임"을 별도로 디자인하는 것이 더 편리합니다 (예 : 기본 메뉴 작성 또는 권한 부여 / 세션 처리 등)


28
좋은 질문입니다. 이 유형의 질문에 맞게 설계된 StackExchange 위치가 있었으면합니다. 저는 PHP에 익숙하고 많은 데이터를 직접 수집하기위한 cURL 프로젝트를 가지고 있으며 라이브러리를 통한 JavaScript 프레임 워크가 내 프로젝트에 적합 할 것이라고 생각합니다. 내 문제는 당신과 같습니다, 나는 당신이 원래 프로젝트 (PHP) 등에서 어떤 부분을 떨어 뜨릴 수 있는지와 함께 좋은 습관 (장단점)을 알고 싶습니다.이 대화가 토론을 요구할 수 있다고 생각합니다. 대화없이 두 언어를 가장 잘 병합합니다.
Shane

PHP / Jquery로 다시 변환하는 AngularJS 프로젝트가 있습니다. 다양한 휴대 기기 및 브라우저에서 작동하도록 각도를 설정하는 데 끝없는 문제가있었습니다. Angular는 SEO하기 어렵고 Google은 친구가 아닙니다. 나는 각도로 전환하여 최고 순위를 가진 사이트가 SERPS를 사라지는 것을
보았습니다

답변:


180

PHP로 개발하는 것이 더 편할 것 같으므로 웹 응용 프로그램의 잠재력을 최대한 활용하지 못하게하십시오.

실제로 PHP가 부분 및 전체 뷰를 렌더링하도록 할 수는 있지만 권장하지는 않습니다.

웹 응용 프로그램, 즉 응용 프로그램처럼 작동하고 클라이언트 쪽 렌더링에 크게 의존하는 웹 페이지를 만들기 위해 HTML 및 자바 스크립트의 가능성을 완전히 활용하려면 클라이언트가 상태 및 프레젠테이션 관리에 대한 모든 책임을 유지하도록해야합니다. 유지 관리가 쉬워지고 사용자에게 친숙해집니다.

보다 API 중심적인 접근 방식으로 더 편하게 생각하는 것이 좋습니다. PHP가 사전 렌더링 된 뷰를 출력하고 DOM 조작을 위해 각도를 사용하는 대신, RESTFully에 대해 수행해야하는 데이터를 PHP 백엔드가 출력하고 Angular가이를 표시하도록 고려해야합니다.

PHP를 사용하여 뷰를 렌더링 :

/user/account

if($loggedIn)
{
    echo "<p>Logged in as ".$user."</p>";
}
else
{
    echo "Please log in.";
}

다음과 같이 JSON을 출력하여 API 중심 접근 방식으로 동일한 문제를 해결하는 방법 :

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 중심 방식에 더 의존합니다. 유지하기가 더 쉬워졌습니다.


2
간단한 예입니다. 나는 나 자신이 모두가하는 슈퍼 듀퍼 기본 로그인 이상의 것을 찾고 있었다. <td> {{name}} </ td>보다 PHP / HTML 및 변수 <td> $ name </ td>이 있고 'app.run (function ($ rootScope) {$ rootScope.name = "Ari Lerner";}); ' 나는 PHP가 'DYNAMIC'Angular Pages를 만들거나 시도하려는 거꾸로 보거나 찾으려고 노력하고 있습니다. 그리고 그것을 보지 못했습니다. 클라이언트가 각 개별 요소를로드하고 템플릿을 채우거나 변경하기를 기다립니다. PHP가 아직 자바 스크립트를 생성하고 쉽게 볼 수 있다는 생각에 열중하지 않습니다.
Shawn Rebelo

2
@ShawnRebelo 당신이 의미하는 바를 명확히 할 수 있습니까 a wall of javascript? 수년간의 PHP 렌더링 후 Angular / JS API 세계에 익숙하지 않으므로이 토론은 흥미 롭습니다.
Dan Nissenbaum

"PHP가 사전 렌더링 된 뷰를 출력하고 DOM 조작에 각도를 사용하는 대신 ..."- 새로운 개념을 소개하겠습니다 .
반대 분노

백엔드의 편안한 API는 모든 언어가 될 수 있으며 프론트 엔드 용 각도 앱은 백엔드에 관계없이 작동 할 수 있습니다.
Amir Savand

3
이해할 수없는 것은 왜 자리 표시 자와 함께 일반 페이지를로드 한 다음 하나 이상의 비동기 요청으로 일부 부분을로드하여 사용자 / 인증 데이터와 같이 첫 페이지에 이미로드 된 것을 가져와야합니까?
Tobia
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.