0

Derzeit habe ich eine Anwendung mit Angular 2 (alle Front-End-Seite) und Symfony 3 (Web-Framework) gebaut. Ich habe jede Ansicht als eine Angular-Anwendung definiert.Single App mit Symfony 3 und Angular 2 (Routen)

Ich denke, es ist die Zeit, zu einer Single-App zu migrieren, aber ich habe einige Fragen, bevor ich in die Höhle des Löwen gehe.

Wenn ein Benutzer die URL manuell ändern, sollten sie natürlich die angeforderte URL eingeben, aber wie kann angular wissen, welche URL versucht zu öffnen?

Ich sollte mehrere Controller erstellen oder nur eine, die alle Anfragen abfangen? Wenn keiner der oben genannten Schritte richtig ist, können Sie bitte einen Vorschlag machen?

Vielen Dank.

Antwort

2

Wenn Sie versuchen, eine Single Page application zu bauen, bedeutet dies, dass Ihre Routen von Ihrem Front-End verwaltet werden, hier von Angular 2 über @angular/router.

Symfony kann dann nur als Back-End-Web-Service (das heißt ein Restful API) verwendet werden, die Front-End-Anrufe über JSON responses beantworten. Abhängig von der Größe Ihrer API möchten Sie möglicherweise FOSRestBundle für diesen Zweck verwenden.

Sie müssen sich also keine Gedanken über die Interpretation von Symfony-Routing machen, da Ihre URLs vom Angular-Router verwaltet werden. Symfony-Routen werden direkt von Ihrer Angular-Anwendung aufgerufen, um Ihre Backend-Daten abzurufen, zu posten, zu löschen.

UPDATE

Sie einen Kommentar zu beantworten, ein Benutzer, der eine URL gibt einfach direkt die Seite, die Sie diese URL über Angular Routing verknüpft sehen, gibt es (fast) keinen Unterschied zwischen Front-End- und Back-End-Routing.

Wenn Sie tief in die Funktionsweise von Hash-Routing in JavaScript eintauchen möchten, können Sie dies überprüfen article.

Um ein echtes Beispiel eines SPA mit voller Winkelrouting zu sehen, ist ga.me ein guter Anfang.

+0

Aber was passiert, wenn der Benutzer die URL direkt im Browser ändert, anstatt auf einen Link in meiner App zu klicken? Danke! –

+1

@IdirOuhabMeskine Ich habe meine Antwort aktualisiert. Kurz gesagt: Es wird einfach funktionieren, darüber müssen Sie sich keine Sorgen machen. –

+1

Vielen Dank @ ivan-gabriele Ein Kollege hat ein Projekt gefunden, das die Anforderungen meiner Frage erfüllt und ich möchte das Projekt mit Ihnen teilen. https://github.com/spartaksun/notice-board Tschüss! –