2013-03-25 3 views
145

AngularJS jest bardzo wydajny, jeśli chodzi o interaktywne HTML5 i wiązania modelu. Z drugiej strony, frameworki PHP takie jak Yii umożliwiają szybkie, dobrze zbudowane, bezpieczne i wydajne tworzenie aplikacji internetowych. Obie technologie zapewniają zaawansowane metody dostępu do danych, iteracji i układania stron.Czy powinienem mieszać AngularJS ze strukturą PHP?

Czy dobrą lub złą praktyką jest mieszanie tych dwóch podejść (po stronie klienta i po stronie serwera) lub czy jest to sprzeczne z intencją interaktywnych, bezproblemowych aplikacji internetowych HTML5 AJAX?

Nie mówię o generowaniu JS przy użyciu PHP (See this question) - mówię o generowaniu widoku, który użyje AngularJS.

Wiem również, że strona AngularJS powinna (lub może) komunikować się z serwerem za pośrednictwem usług REST, aby uzyskać dane (See this question) zamiast pobierać je na przykład bezpośrednio ze zmiennych PHP. Ale dla mnie wygodniej jest zaprojektować "ramkę" dla całej aplikacji internetowej osobno w PHP (np. Zbudować menu główne lub obsłużyć autoryzację/sesje itp.).

+23

Świetne pytanie. Szkoda, że ​​nie istnieje lokalizacja StackExchange zaprojektowana dla tego typu pytań. Jestem przyzwyczajony do PHP i mam projekt cURL do zbierania wielu danych osobiście, i wierzę, że framework JavaScript ponad biblioteką dobrze pasowałby do mojego projektu. Mój problem jest podobny do twojego, chcę wiedzieć, co to jest dobra praktyka (upides i downsides) wraz z tym, jakie części opuszczasz z oryginalnego projektu (PHP) itd.Wierzę, że te rozmowy mogłyby skłonić do debaty, ale jak możemy osiągnąć najlepsze połączenie dwóch języków bez rozmowy. – Shane

Odpowiedz

170

Wygląda na to, że wygodniej jest pracować z PHP pozwalasz temu powstrzymać się przed wykorzystaniem pełnego potencjału w aplikacjach internetowych.

Jest rzeczywiście możliwe, aby mieć częściowe widoki PHP i całe widoki, ale nie polecam go.

Aby w pełni wykorzystać możliwości HTML i javascript do stworzenia aplikacji internetowej, czyli strony internetowej, która działa bardziej jak aplikacja i opiera się głównie na renderowaniu po stronie klienta, należy rozważyć umożliwienie klientowi utrzymania pełnej odpowiedzialności za zarządzanie stan i prezentacja. Będzie to łatwiejsze w utrzymaniu i będzie bardziej przyjazne dla użytkownika.

Polecam Ci bardziej komfortowe myślenie w bardziej zorientowanym na API podejściu. Zamiast wyjściowego PHP z pre-renderowanym widokiem i używać kątowego dla zwykłej manipulacji DOM, powinieneś rozważyć posiadanie wyjściowego zaplecza PHP danych, które powinny działać na RESTFully, i żeby Angular je zaprezentował.

Używanie PHP do renderowania widok:

/user/account

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

Jak sam problem może być rozwiązany za pomocą API centric podejścia przez wyprowadzanie JSON tak:

api/auth/

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

i w Angular można zrobić dostać, a nd obsługuje stronę klienta odpowiedzi.

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

mieszać zarówno po stronie klienta i po stronie serwera sposób zaproponowany może nadawać się do mniejszych projektów, w których konserwacja nie jest ważne i jesteś jedyny autor, ale skłaniam się bardziej ku API centric sposób, jak to będzie bardziej właściwe oddzielenie conserów i łatwiejsze do utrzymania.

+2

To proste z przykładu. Sam szukałem czegoś więcej niż zwykłego superużytkownika, do którego wszyscy się logują. Duża różnica, gdy masz PHP/HTML i zmienne $ nazwa ponad {{nazwa}}, a następnie "app.run (funkcja ($ rootScope) {$ rootScope.name =" Ari Lerner ";}); ' Sam staram się zobaczyć/znaleźć plusy próbowania lub próbowania, aby PHP tworzyło "DYNAMICZNE" strony kątowe. I po prostu nie widząc tego. Posiadanie klienta czekającego na załadowanie każdego pojedynczego elementu i zapełnienie/zmianę szablonów. Po prostu nie podoba mi się pomysł, że PHP generuje ścianę javascript, tak jak jeszcze, i łatwo jest oglądać –

+2

@ShawnRebelo Czy możesz wyjaśnić nieco, co rozumiesz przez "ścianę javascript"? Jestem nowicjuszem w świecie Angular/JS API po latach renderowania PHP, więc ta dyskusja jest dla mnie interesująca. –

+0

"Zamiast wyjściowego PHP widok wstępnie renderowany i używać kątowego tylko do manipulacji DOM ..." - Pozwól, że przedstawię ci [nową-starą koncepcję] (http://alistapart.com/article/understandingprogressivehamancement) . –