2014-10-17 60 views
1

我正在嘗試在Go with Angular中編寫應用程序。我不確定是否有正確的概念,但基本上我應該提供一個簡單的html來加載角度和應用程序(js)本身,然後其餘部分由ajax請求處理。我不知道如何在每個路徑上的每個非Ajax請求上提供html文件?我想使用Gorilla mux,但我無法找到如何做到這一點。Go + Angular:loading base html

這是否是正確的方向?

回答

1

在沒有任何已知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的索引文件提供服務。

0
//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。希望這可以幫助。