Zaczynam swój pierwszy projekt od yo + grunt + angular.js.
Mam usługę, która musi odczytać niektóre dane z mojego serwera; Zbudowałem go za pomocą usługi kątowej $ http. Zbudowałem również usługę WWW RESTful (zaimplementowaną w PHP, ale może to być Java, C, Perl, ..., to nie ma znaczenia), która udostępnia interfejs API w celu pobrania danych.
Serwer, z którego służy mój serwer ng-app, jest obecnie (i prawdopodobnie zawsze będzie) taki sam, z którego jest uruchamiana usługa sieciowa PHP (przez Apache).Grunt serve + PHP?
Zastanawiam się, czy jest to akceptowalna architektura ... kończę na dwóch różnych serwerach (pomruk i apache) na tym samym serwerze ... Więcej, zawsze muszę dodać "Access-Control-Allow-Origin" : 127.0.0.1" do wyjścia z moich usług PHP ... :-(
Czy to możliwe, aby służyć PHP z grunt, na przykład
UPDATE: mówię o fazie rozwoju ... Oczywiście przy produkcji nie chciałbym używać ...
Aby lepiej wyjaśnić, chciałbym użyć względnych adresów URL w $ http() ... Z tym samym kodem zarówno na etapie rozwoju, jak i produkcji Etapy etapów ...
Jeśli podczas produkcji mogę oczekiwać, że to zadziała, ponieważ będę miał tylko jeden serwer dla wdrożonej Angular app i usługi PHP, która ma interpretować PHP w rozwoju, gdy aplikacja Angular jest obsługiwana przez Grunt? Cholera? Jeśli tak, w jaki sposób?
UDPATE 2, i ewentualnego ROZWIĄZANIE: Po przemyśleniu trochę w tej kwestii (a także czytanie this artykuł), a nie otrzymania satysfakcjonujących odpowiedzi tutaj, postanowiłem będę używał tego podejścia:
- Rozwój
- Użyj serwera "podobnego do produkcji" (Apache, lighttpd, ...), aby wyświetlać prawdziwe strony PHP.
Użyj bezwzględnych adresów URL z $ http lub $ request, aby uzyskać dostęp do tego serwera (różni się od Grunt, który obsługuje strony angular.js). Adresy URL będą łatwo konfigurowalne, wymagając jedynie minimalnej ilości pracy (i możliwych błędów), aby przejść do produkcji. - W skryptach PHP, przed wygenerowaniem (JSON) wyjścia, zawsze wyprowadź odpowiedni nagłówek "Access-Control-Allow-Origin"; wartość dyrektywy będzie również łatwo konfigurowalna.
- Użyj serwera "podobnego do produkcji" (Apache, lighttpd, ...), aby wyświetlać prawdziwe strony PHP.
- Wytwarzanie
- rozmieszczanie angularjs aplikacji w tym samym serwerze, na którym PHP rozłożonym.
- Zmień adresy URL i uczyń je względnymi, ponieważ teraz mają one to samo źródło ze skryptami po stronie klienta.
- Zmień nagłówek "Access-Control-Allow-Origin", aby zezwalać tylko na lokalne żądania (lub w ogóle usunąć nagłówek ...).
Byłbym bardzo zadowolony, jeśli ktoś chciałby, aby skomentować to rozwiązanie, aby go zakwestionować lub zaproponować lepsze te ...
Tak u może służyć PHP z pomrukiem ale twój lepiej wyłączyć za pomocą Apache zamiast wbudowanego serwera livereload/zegarka. Nadal możesz uruchomić serwer pomruczeń, aby automatycznie odświeżyć stronę podczas zapisywania. Pozwoli to zaoszczędzić czas wdrożenia i pozwoli na użycie modrewrite i takie. – shaunhusain
Nie używałbym czegoś, co służy przede wszystkim do ułatwienia rozwoju, aby służyło do produkcji aplikacji. –
Mówię o etapie rozwoju ... Oczywiście przy produkcji nie użyłbym ... Ale zastanawiam się, czy - na przykład - w $ http() mogę użyć względnego adresu URL ... Hope I wyjaśniłem sobie ... – MarcoS