2016-07-24 35 views
0

現在我有3個文件和一個文件夾在如下所示的同一目錄中。 index.html將請求文件夾/img中的.css.js(ReactJS)和圖像。通過`html/template`服務動態HTML文件,同時還提供文件服務器來託管同一目錄中的CSS,JS和圖像文件

enter image description here

後相當多的搜索和嘗試,我知道我可以使用以下方法來製作文件服務器提供內部client/index的文件/ URL請求。

http.Handle("/", http.StripPrefix("/", http.FileServer(http.Dir("client/index")))) 

它運作良好。但它只提供靜態文件,我希望在轉出之前對html文件進行一些更改,例如修改標記<input id='projectId' type='hidden' value={{.projectId}}/>中的值。因此,我需要註冊HandleFunc('/', handler)才能執行html模板,但url已用於實現文件服務器。

什麼是動態修改html的正確方法,同時也向文件提供文件請求(.css.js和文件夾img中的圖像)?

服務器/ pghndler /索引/ index.go

package index 

func RegisterHandlers() { 
    http.Handle("/", http.StripPrefix("/", http.FileServer(http.Dir("client/index")))) 
    http.HandleFunc("/login", loginHandler) 
} 

回答

1

在我看來,最簡單的方法(更少的代碼)是假裝好像你的靜態文件在不同的目錄,說「靜」。這意味着,你必須改變,你有

<link rel="stylesheet" href="clent.css" type="text/css"> 

,你是指他們在HTML文件(S)的路徑,即你

<link rel="stylesheet" href="static/clent.css" type="text/css"> 

然後在你的服務器的代碼替換它,你可以有路徑static的處理程序,並仍然使用/動態的東西,即

func main() { 
    http.HandleFunc("/", hh_root) 
    http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("/home/Casper/public/client/index/")))) 
    http.ListenAndServe(":8080", nil) 
} 

func hh_root(w http.ResponseWriter, r *http.Request) { 
    // generate response from template 
} 

是很常見的網絡資源整理成目錄像「css」和「js」這樣的電子設備,所以也許將這些用於虛假路徑是有意義的 - 那麼當你的應用程序增長並且你希望更好地組織它時,它更容易實現。

相關問題