我正在使用 Angular 2 和 Go 构建一个单页应用程序,在 Angular 中我使用路由。如果我打开网站,比如说,http://example.com/Go 将为我提供我的index.html文件,这很好,因为我写了这个:mux.Handle("/", http.FileServer(http.Dir(mysiteRoot)))现在我在 Angular 中有一个路由,比方说,/posts如果它是默认路由(即何时useAsDefault是true),或者如果我只是手动转到http://example.com/posts,我将收到来自 Go 的 404 错误,这意味着没有指定处理程序对于这条路。我不认为在 Go 中为每条 Angular 路由创建处理程序是一个好主意,因为可能有很多路由。所以我的问题是,index.html如果请求 URL 与我在ServeMux?
2 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
嗯,这实际上很容易。该net/http文件说,这样的:
请注意,由于以斜杠结尾的模式命名了有根子树,因此模式“/”匹配其他注册模式不匹配的所有路径,而不仅仅是带有 Path ==“/” 的 URL。
所以我需要对我的"/"处理程序做一些事情。http.FileServer在模式字符串中指定的目录中查找文件,因此我将其替换为:
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, mysiteRoot + "index.html")
})
它工作得很好。
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
我认为您需要更改 angular2 应用程序中的 URL 提供程序设置以使用HashLocationStrategy。使用它,您的路线将采用以下形式
#/帖子
并且不会在您的 golang 应用程序中触发任何路由。
- 2 回答
- 0 关注
- 142 浏览
添加回答
举报
0/150
提交
取消