我正在使用 Angular 2 和 Go 構(gòu)建一個(gè)單頁應(yīng)用程序,在 Angular 中我使用路由。如果我打開網(wǎng)站,比如說,http://example.com/Go 將為我提供我的index.html文件,這很好,因?yàn)槲覍懥诉@個(gè):mux.Handle("/", http.FileServer(http.Dir(mysiteRoot)))現(xiàn)在我在 Angular 中有一個(gè)路由,比方說,/posts如果它是默認(rèn)路由(即何時(shí)useAsDefault是true),或者如果我只是手動(dòng)轉(zhuǎn)到http://example.com/posts,我將收到來自 Go 的 404 錯(cuò)誤,這意味著沒有指定處理程序?qū)τ谶@條路。我不認(rèn)為在 Go 中為每條 Angular 路由創(chuàng)建處理程序是一個(gè)好主意,因?yàn)榭赡苡泻芏嗦酚?。所以我的問題是,index.html如果請(qǐng)求 URL 與我在ServeMux?
2 回答

HUX布斯
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
嗯,這實(shí)際上很容易。該net/http文件說,這樣的:
請(qǐng)注意,由于以斜杠結(jié)尾的模式命名了有根子樹,因此模式“/”匹配其他注冊(cè)模式不匹配的所有路徑,而不僅僅是帶有 Path ==“/” 的 URL。
所以我需要對(duì)我的"/"處理程序做一些事情。http.FileServer在模式字符串中指定的目錄中查找文件,因此我將其替換為:
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, mysiteRoot + "index.html")
})
它工作得很好。

天涯盡頭無女友
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
我認(rèn)為您需要更改 angular2 應(yīng)用程序中的 URL 提供程序設(shè)置以使用HashLocationStrategy。使用它,您的路線將采用以下形式
#/帖子
并且不會(huì)在您的 golang 應(yīng)用程序中觸發(fā)任何路由。
- 2 回答
- 0 關(guān)注
- 165 瀏覽
添加回答
舉報(bào)
0/150
提交
取消