我正在开发一个项目,该项目的客户端是在 JSF 上编写的,而后端是在 Wildfly 上运行的 Java EE 上编写的。该团队正在考虑迁移到 Angular。方法是在 Angular 中编写新页面并慢慢替换旧的 JSF 页面。
如何启用从 JSF 页面到特定 Angular 页面的导航?
我想知道在 Angular 上编写新页面并在同一个引擎盖下与当前的 JSF 客户端一起运行它们是否有意义,如果是这样,你会怎么做?
只要您的后端服务是由某种类型的托管 bean(cdi、jsf 等)构建的,所有实现它的方式都会经历一些不成熟的路径,此外它也可能比您预期的要付出更多的努力。
如果您在后端有一个 restfull 服务“在 Angular 上编写新页面并在同一引擎盖下与当前的 JSF 客户端一起运行它们”将是有意义的,并且只需要在 jsf 端进行一些重定向配置,以便为您的特定页面提供服务角度应用程序或使用散列位置策略。实现这样的案例并不复杂。步骤基本上是这样的:
使用与 jsf 上下文路径相同的上下文路径以及 angular 文件夹的名称构建 angular 项目,如下所示:
ng build --prod --base-href "/myjsfapp/angular/" --deploy-url "/myjsfapp/angular/"
在 jsf webapp 文件夹中创建一个名为 angular 的文件夹,并将您的 angular distrubution 文件放在其中。
完成上述步骤后,您的 Angular 应用程序将在 /context-path/angular/index.html 路径下提供服务。
然而,访问有角度的页面需要更多的关注。因为 Angular 应用程序大约是一个页面 (index.html),所以所有页面实际上都是在运行时在同一个 index.html 中提供的逻辑页面。这就是为什么当你尝试访问你的一个页面时,比如用户页面,在你的 Angular 应用程序中,你的服务器将启动并搜索一个物理 /users.html 页面并返回一个 http 404。要处理这个,你可以设置重定向规则或选择最简单的方法,即散列位置策略。通过在 forRoot 调用中添加 {useHash:true} 配置,可以轻松地在 Angular 应用程序中使用哈希定位策略。(如果你采用这个策略,这应该是第一步)
@NgModule({
imports: [ RouterModule.forRoot(routes, {useHash: true})],
...
})
使用散列位置策略,您可以使用散列网址访问有角度的页面。例如,http://localhost:8080/myjsfapp/angular/index.html#users
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句