Как включить навигацию со страницы JSF на определенную страницу Angular?

Я работаю над проектом, в котором клиент написан на JSF, а серверная часть на Java EE работает на Wildfly. Команда рассматривает возможность перехода на Angular. Подход состоит в том, чтобы писать новые страницы на Angular и постепенно заменять старые страницы JSF.

Как включить навигацию со страницы JSF на определенную страницу Angular?

Возможный дубликат Переход с JSF на AngularJS

Jasper de Vries 08.06.2019 02:26

Тогда вопрос не по теме для stackoverflow и более передовой разработки программного обеспечения: softwareengineering.stackexchange.com

Kukeltje 08.06.2019 15:25

@JasperdeVries, это не дубликат...

spaykit 09.06.2019 18:46

Пожалуйста, не превращайте свой вопрос во что-то совершенно новое. Вместо этого создайте новый.

Jasper de Vries 12.06.2019 18:07

Я запутался, должен ли я удалить этот вопрос?

spaykit 13.06.2019 14:23
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
3
5
562
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

I wonder if writing new pages at Angular and running them alongside the current JSF client under the same hood make sense, if so, how would you do that?

Пока ваши серверные службы построены из управляемых компонентов (cdi, jsf и т. д.), все пути к ним проходят через некоторые хакерские пути, кроме того, это также может потребовать гораздо больше усилий, чем вы ожидаете.

Если бы у вас была служба restfull на бэкэнде, «написание новых страниц в Angular и запуск их вместе с текущим клиентом JSF под одним капотом» имело бы смысл, и все, что нужно, это некоторые конфигурации перенаправления на стороне jsf для определенных страниц для обслуживания вашего углового приложения или использования стратегии хеш-местоположения. Реализовать такой случай не так уж и сложно. Шаги в основном будут такими:

  • Создайте свой угловой проект с тем же контекстным путем, что и ваш jsf context-path плюс имя вашей угловой папки, например:

    ng build --prod --base-href "/myjsfapp/angular/" --deploy-url "/myjsfapp/angular/"

  • Создайте папку с именем angular внутри папки веб-приложения jsf и поместите в нее файлы дистрибутива angular.

После выполнения описанных выше шагов ваше угловое приложение будет обслуживаться по пути /context-path/angular/index.html.

Однако доступ к угловым страницам потребует большего внимания. Поскольку угловое приложение представляет собой одну страницу (index.html), все страницы на самом деле являются логическими страницами, обслуживаемыми во время выполнения внутри одного и того же index.html. Вот почему, когда вы пытаетесь получить доступ к одной из ваших страниц, скажем, странице пользователей, внутри вашего углового приложения ваш сервер начнет поиск физической страницы /users.html и вернет http 404. Чтобы справиться с этим, вы можете установить правила перенаправления. или выберите самый простой способ — стратегию хэш-локации. Использование стратегии хэш-локации в вашем угловом приложении легко выполняется путем добавления конфигурации {useHash:true} в вызов forRoot. (Если вы выберете эту стратегию, это должно быть первым шагом)

@NgModule({
  imports: [ RouterModule.forRoot(routes, {useHash: true})],
  ...
})

Благодаря стратегии хэш-локации ваши угловые страницы будут доступны с хешированными URL-адресами. Например, http://localhost:8080/myjsfapp/angular/index.html#users

Большая часть бизнес-уровня предоставляется через REST, я понимаю, что для этого потребуется добавить новые API. Как бы вы сделали конфигурации перенаправления? Что произойдет, если пользователь войдет в систему через клиент JSF, а затем вы перенаправите его в клиент Angular?

spaykit 08.06.2019 12:44

Я редактирую свой ответ с дополнительной информацией.

talhature 08.06.2019 13:49

Информация действительно хорошая, попробую в понедельник! Последнее, что мне не хватает, это то, как вы будете обрабатывать вход в систему?

spaykit 08.06.2019 16:47

@spaykit, не могли бы вы подробно рассказать о входе в систему?

talhature 09.06.2019 14:17

Вы входите из клиента JSF, затем вы перенаправляетесь на какую-то страницу Angular, клиент Angular не знает, кто вы, поэтому для следующего вызова REST потребуются учетные данные или даже для продолжения навигации внутри приложения Angular потребуются учетные данные.

spaykit 09.06.2019 16:14

Вы поняли мою точку зрения? @talhature

spaykit 12.06.2019 14:59

Другие вопросы по теме