qum*_*uma 4 spring angularjs spring-boot
我读过 AngularJS 使用 hashbang URL 作为默认值 - 但这不是一个优势,因此应该使用 HTML5 URL。为了在客户端配置此行为,必须完成以下操作:
...
$locationProvider.html5Mode(true);
...
Run Code Online (Sandbox Code Playgroud)
在服务器端还必须完成一些配置 - 据我了解应该配置 URL 请求,因此应该将包含 ng-app 的页面(起始页面 - 例如index.html)传递给客户端。不包括提供静态资源(CSS、图像、AngularJS 部分等)的 URL 和用于 CRUD 的 URL(例如 RESTful 服务 URL)。
我的问题不是如何在服务器端调整这种行为(例如,对于内部有嵌入式服务器的字符串启动)?
另一个问题是,您是否在 AngularJS 应用程序中区分静态资源(例如 .../static/..)和 CRUD URL(例如 .../database/...)?
多谢!
小智 5
在 Spring Boot 中,您可以像这样配置一个包罗万象的视图控制器:
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.setOrder(Ordered.LOWEST_PRECEDENCE);
registry.addViewController("/**").setViewName("forward:/index.html");
}
}
Run Code Online (Sandbox Code Playgroud)
这会将所有未处理的请求转发到index.html。
setOrder(Ordered.LOWEST_PRECEDENCE)用于确保这种包罗万象的转发仅在没有找到其他路由后才适用。
但是,现在所有资源查找也都通过此视图控制器进行路由(因为 WebMvcAutoConfiguration 在应用默认资源处理程序之前检查路径模式是否存在)。
一种可能的修复方法是将静态路径模式设置为application.properties包含对文件扩展名的检查:
spring.mvc.static-path-pattern = /**.*
Run Code Online (Sandbox Code Playgroud)
仅当您的角度路线不包含任何扩展时,这才有效。另一种方法是完全禁用 spring boot 的资源处理(spring.resources.addMappings = false)并替换为您自己的。
| 归档时间: |
|
| 查看次数: |
2558 次 |
| 最近记录: |