Я разработал приложение, имеющее ту же архитектуру, то есть Spring для внутреннего интерфейса, Angular для внешнего интерфейса.
В этом сценарии мне хотелось бы иметь суффикс для углового приложения следующим образом
@Controller
public class InitController {
@GetMapping("/ng-app/**")
public String handleNgApp(Model model) {
return "ng-app/index";
}
И предоставьте следующую конфигурацию в качестве преобразователя шаблона.Я использую thymeleaf
, но вы можете использовать что угодно.
@Bean
public SpringResourceTemplateResolver thymeleafTemplateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setPrefix("classpath:/templates/"); // /WEB-INF/ or classpath:/templates/
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("LEGACYHTML5"); // HTML5 or LEGACYHTML5
templateResolver.setCharacterEncoding("UTF-8");
return templateResolver;
}
И, наконец, когда я создаю свое угловое приложение, я задаю путь вывода следующим образом
ng build --prod -op=<root-directory-of-spring>/src/main/resources/templates/ng-app
-op
он же output-path
предназначен для angular-cli, чтобы узнать, где разместить скомпилированные ресурсы.
При этой настройке, когда пользователь приходит в ваше приложение и перемещается по дочернему маршруту, давайте назовем его home
, адресная строка будет выглядеть так: yourdomain.com/ng-app/home
.
Когда вы нажимаете кнопку обновления, браузер отправляет запрос на /ng-app/home
, который будет обработан InitController
.После этого будет возвращено приложение angular, а angular перейдет к маршруту home
.Все будут счастливы.