我正在嘗試在Go with Angular中編寫應用程序。我不確定是否有正確的概念,但基本上我應該提供一個簡單的html來加載角度和應用程序(js)本身,然後其餘部分由ajax請求處理。我不知道如何在每個路徑上的每個非Ajax請求上提供html文件?我想使用Gorilla mux,但我無法找到如何做到這一點。Go + Angular:loading base html
這是否是正確的方向?
我正在嘗試在Go with Angular中編寫應用程序。我不確定是否有正確的概念,但基本上我應該提供一個簡單的html來加載角度和應用程序(js)本身,然後其餘部分由ajax請求處理。我不知道如何在每個路徑上的每個非Ajax請求上提供html文件?我想使用Gorilla mux,但我無法找到如何做到這一點。Go + Angular:loading base html
這是否是正確的方向?
在沒有任何已知url的每個請求上您應該發送index.html - 或者其他基礎應用程序文件。
Gorilla/mux有一個NotFoundHandler,它是每一個處理程序都沒有被任何其他路線匹配。您可以assignt自己的處理程序爲它這樣的:
與大猩猩的解決方案/ MUX是:
func main() {
r := mux.NewRouter()
r.HandleFunc("/foo", fooHandler)
r.NotFoundHandler = http.HandlerFunc(notFound)
http.Handle("/", r)
}
而NOTFOUND是:
func notFound(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "static/index.html")
}
假設您的基本文件是在靜態/指數.html :)。
現在所有您的請求都不是任何其他請求(因此,在該設置中 - 不是在路由中定義的ajax調用)將爲具有可由ngRoute或ui-router處理的url的索引文件提供服務。
//serve static files from a folder 'public' which should be in the same dir as the executable.
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Cache-Control", "no-cache")
http.ServeFile(w, r, "public"+r.URL.Path)
})
這將嘗試服務於公共目錄中的每個不匹配的URL。希望這可以幫助。