gpt4 book ai didi

angularjs - Angular HTML5 URLs - 服务器配置

转载 作者:行者123 更新时间:2023-12-05 01:25:56 26 4
gpt4 key购买 nike

我已经读到 AngularJS 使用 hashbang URL 作为默认值 - 但这不是一个优势,因此应该使用 HTML5 URL。
为了在客户端配置此行为,必须完成以下操作:

...
$locationProvider.html5Mode(true);
...

在服务器端,还必须完成一些配置 - 据我所知,应该配置 URL 请求,因此应该将包含 ng-app 的页面(起始页面 - 例如 index.html)传递给客户端。不包括提供静态资源(CSS、图像、AngularJS 部分等)的 URL 和用于 CRUD 的 URL(例如 RESTful 服务 URL)。

我的问题不是如何在服务器端调整这种行为(例如,对于带有嵌入式服务器的字符串引导)?

另一个问题是,您是否在我们的 AngularJS 应用程序中区分静态资源(例如 .../static/..)和 CRUD URL(例如 .../database/...)?

非常感谢!

最佳答案

在 Spring Boot 中,您可以像这样配置一个包罗万象的 View Controller :

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.setOrder(Ordered.LOWEST_PRECEDENCE);
registry.addViewController("/**").setViewName("forward:/index.html");
}
}

这会将所有未以其他方式处理的请求转发到 index.html。 setOrder(Ordered.LOWEST_PRECEDENCE)用于确保此包罗万象的转发仅在未找到其他路由后才适用。

但是,现在所有资源查找也通过此 View Controller 路由(因为 WebMvcAutoConfiguration 在应用默认资源处理程序之前检查路径模式的存在)。

一种可能的解决方法是在 application.properties 中设置静态路径模式。包括对文件扩展名的检查:
spring.mvc.static-path-pattern = /**.*

这仅在您的 Angular 路由不包含任何扩展时才有效。
另一种方法是完全禁用 spring boot 的资源处理( spring.resources.addMappings = false )并替换您自己的。

关于angularjs - Angular HTML5 URLs - 服务器配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30859231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com