Czy powinienem łączyć AngularJS z frameworkiem PHP? [Zamknięte]

161

AngularJS jest bardzo potężny, jeśli chodzi o interaktywne powiązanie HTML5 i model. Z drugiej strony frameworki PHP, takie jak Yii, umożliwiają szybkie, dobrze zorganizowane, bezpieczne i wydajne tworzenie aplikacji internetowych. Obie technologie zapewniają wyrafinowane środki dostępu do danych, iteracji i układu strony.

Czy łączenie tych dwóch podejść („konfiguracja strony” po stronie klienta i po stronie serwera) jest dobrą czy złą praktyką, czy raczej jest to sprzeczne ze znaczeniem interaktywnych, płynnych aplikacji internetowych HTML5 AJAX?

Nie mówię o generowaniu JS za pomocą PHP ( zobacz to pytanie ) - mówię o wygenerowaniu widoku, który będzie wykorzystywał AngularJS.

Wiem również, że strona AngularJS powinna (lub może) komunikować się z serwerem za pośrednictwem usług REST, aby pobierać dane ( zobacz to pytanie ) zamiast pobierać je na przykład bezpośrednio ze zmiennych PHP. Ale wydaje mi się, że wygodniejsze wydaje się zaprojektowanie "ramki" dla całej aplikacji internetowej oddzielnie w PHP (np. Zbudowanie menu głównego lub obsługa autoryzacji / sesji itp.)

Dani
źródło
28
Świetne pytanie. Żałuję, że nie było lokalizacji StackExchange zaprojektowanej dla tego typu pytań. Jestem przyzwyczajony do PHP i mam projekt cURL do samodzielnego zbierania dużej ilości danych i uważam, że framework JavaScript zamiast biblioteki będzie dobrze pasował do mojego projektu. Mój problem jest podobny do twojego, chcę wiedzieć, co jest dobrą praktyką (plusy i minusy) wraz z tym, jakie części odrzucasz z oryginalnego projektu (PHP) itp. Uważam, że te rozmowy mogą wywołać debatę, ale jak możemy dostać się do najlepsze połączenie dwóch języków bez rozmowy.
Shane
Mam kilka projektów AngularJS, które konwertuję z powrotem na PHP / Jquery. Miałem nieskończone problemy z uruchomieniem Angulara do pracy z szeroką gamą urządzeń mobilnych i przeglądarek. Angular jest trudny do pozycjonowania, a Google nie jest jego przyjacielem. Widziałem, jak witryny o najwyższym rankingu znikają z SERPS z powodu przejścia na kątowe ...
HappyCoder

Odpowiedzi:

180

Wygląda na to, że programowanie w PHP może być wygodniejsze, jeśli pozwolisz, aby powstrzymało Cię to przed wykorzystaniem pełnego potencjału aplikacji internetowych.

Rzeczywiście jest możliwe renderowanie części i całych widoków w PHP, ale nie polecałbym tego.

Aby w pełni wykorzystać możliwości HTML i javascript do stworzenia aplikacji internetowej, to znaczy strony internetowej, która działa bardziej jak aplikacja i w dużym stopniu opiera się na renderowaniu po stronie klienta, należy rozważyć pozostawienie klientowi pełnej odpowiedzialności za zarządzanie stanem i prezentacją. Będzie to łatwiejsze w utrzymaniu i będzie bardziej przyjazne dla użytkownika.

Poleciłbym ci bardziej komfortowe myślenie w podejściu bardziej skoncentrowanym na API. Zamiast wypisywać PHP wstępnie wyrenderowany widok i używać angular do zwykłej manipulacji DOM, powinieneś rozważyć wypisanie przez zaplecze PHP danych, które powinny być wykonywane na RESTFully, i udostępnienie ich przez Angular.

Używanie PHP do renderowania widoku:

/user/account

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

Jak ten sam problem można rozwiązać za pomocą podejścia zorientowanego na API, wyprowadzając JSON w następujący sposób:

api/auth/

{
  authorized:true,
  user: {
      username: 'Joe', 
      securityToken: 'secret'
  }
}

aw Angular można zrobić get i obsłużyć stronę klienta odpowiedzi.

$http.post("http://example.com/api/auth", {})
.success(function(data) {
    $scope.isLoggedIn = data.authorized;
});

Połączenie strony klienta i serwera w sposób, który zaproponowałeś, może być odpowiednie dla mniejszych projektów, w których konserwacja nie jest ważna i jesteś jedynym autorem, ale skłaniam się bardziej w kierunku opartym na API, ponieważ będzie to bardziej poprawne oddzielenie problemów i woli łatwiejsze w utrzymaniu.

Kenneth Lynne
źródło
2
Prosty przykład. Sam szukałem czegoś więcej niż tylko super podstawowego loginu, który każdy robi. Duża różnica, gdy masz PHP / HTML i zmienne <td> $ name </td> nad <td> {{name}} </td>, a następnie „app.run (function ($ rootScope) {$ rootScope.name = "Ari Lerner";}); ' Sam próbuję zobaczyć / znaleźć zalety próby lub próby zmuszenia PHP do tworzenia „DYNAMICZNYCH” stron kątowych. I po prostu tego nie widzę. Klient czeka, aby załadować każdy pojedynczy element i wypełnić / zmienić szablony. Po prostu nie jestem zadowolony z pomysłu PHP generującego taką ścianę javascript, która jest teraz łatwa do przeglądania
Shawn Rebelo
2
@ShawnRebelo Czy możesz wyjaśnić, co masz na myśli a wall of javascript? Jestem nowy w świecie API Angular / JS po latach renderowania PHP, więc ta dyskusja jest dla mnie interesująca.
Dan Nissenbaum
„Zamiast wyprowadzać z PHP wstępnie wyrenderowany widok i używać angular do zwykłej manipulacji DOM…” - Pozwólcie, że przedstawię wam nową, starą koncepcję .
Dissident Rage
Dokładnie tak powinno być, spokojnym API z zaplecza może być dowolny język, a aplikacja kątowa dla front-endu może działać niezależnie od zaplecza.
Amir Savand
3
Nie mogę zrozumieć, dlaczego powinienem załadować stronę ogólną z symbolami zastępczymi, a następnie załadować część z jednym lub kilkoma żądaniami asynchronicznymi, aby uzyskać coś, co już miałem podczas ładowania pierwszej strony, na przykład dane użytkownika / uwierzytelnienia?
Tobia,