Одно приложение с Symfony 3 и Angular 2 (маршруты)

В настоящее время у меня есть приложение, созданное с помощью Angular 2 (вся внешняя сторона) и Symfony 3 (веб-фреймворк). Я определил каждое представление как приложение Angular.

Я думаю, что пришло время перейти на единое приложение, но у меня есть несколько вопросов, прежде чем я отправлюсь в логово льва.

Если пользователь вручную меняет URL-адрес, конечно, он должен ввести запрошенный URL-адрес, но как angular узнает, какой URL-адрес пытается открыть?

Я должен создать несколько контроллеров или только один, который ловит все запросы? Если ни один из вышеперечисленных способов не является правильным, пожалуйста, можете ли вы предложить какой-либо способ сделать это?

Большое спасибо.


person Idir Ouhab Meskine    schedule 02.07.2016    source источник


Ответы (1)


Если вы пытаетесь создать одностраничное приложение, это означает, что ваши маршруты будут управляться вашим внешним интерфейсом, здесь Angular 2 через @angular/router .

После этого Symfony можно использовать только как внутреннюю веб-службу (т. е. Restful API). который будет отвечать на ваши внешние вызовы через Ответы JSON. В зависимости от размера вашего API вы можете использовать FOSRestBundle. для этой цели.

Таким образом, вам не нужно беспокоиться об интерпретации маршрутизации Symfony, поскольку вашими URL-адресами будет управлять маршрутизатор Angular. Маршруты Symfony будут вызываться непосредственно вашим приложением Angular для получения/отправки/помещения/удаления/исправления ваших внутренних данных.

ОБНОВЛЕНИЕ

Чтобы ответить на ваш комментарий, пользователь, который напрямую вводит URL-адрес, просто увидит страницу, которую вы связали с этим URL-адресом через маршрутизацию Angular, нет (почти) никакой разницы между внешней и внутренней маршрутизацией.

Если вы хотите глубже понять, как работает хеш-маршрутизация в javascript, вы можете проверить это статья.

Чтобы увидеть реальный пример SPA с полной маршрутизацией Angular, хорошо начать с ga.me.

person Ivan Gabriele    schedule 03.07.2016
comment
Но что произойдет, если пользователь изменит URL-адрес прямо в браузере, вместо того, чтобы щелкнуть любую ссылку моего приложения? Спасибо! - person Idir Ouhab Meskine; 03.07.2016
comment
@IdirOuhabMeskine Я обновил свой ответ. Вкратце: это будет просто работать, вам не нужно об этом беспокоиться. - person Ivan Gabriele; 03.07.2016
comment
Спасибо @ivan-gabriele Коллега нашел проект, отвечающий требованиям моего вопроса, и я хочу поделиться проектом с вами. github.com/spartaksun/notice-board Пока! - person Idir Ouhab Meskine; 16.11.2016