2016-03-09 34 views
6

我安裝項目加載圖片和css中Golang

http.HandleFunc("/",route.IndexHandler)

的根目錄中server.js路由封裝mainIndexHandler在包route實現這樣的:

func IndexHandler(w http.ResponseWriter, r *http.Request) { 
    data:=struct{ 
     Name string 
    }{ 
     "My name", 
    } 
    util.RenderTemplate(w, "index", data) 
} 

RenderTemplate功能實現在包util這樣的:

在項目
func RenderTemplate(w http.ResponseWriter, tmpl string, data interface{}) { 
    cwd, _ := os.Getwd() 
    t, err := template.ParseFiles(filepath.Join(cwd, "./view/" + tmpl + ".html")) 
    if err != nil { 
     http.Error(w, err.Error(), http.StatusInternalServerError) 
     return 
    } 
    err = t.Execute(w, data) 
    if err != nil { 
     http.Error(w, err.Error(), http.StatusInternalServerError) 
    } 
} 

目錄結構是這樣的:

/ 
/public/css 
/public/images 
/public/js 
/route 
/view 

index.html視圖位於夾view,路由器是在文件夾route

index.html我有這樣的資源:

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

<img src="../public/images/img_landing_page_mac.png">

當請求適當的路徑時,index.html仍然呈現,但圖像和樣式表未加載。我怎樣才能將它們包含在Golang的html模板引擎中?

回答

7

您需要明確要求服務器提供靜態文件。

http.FileServer

在你的情況下注冊另一個處理程序。

http.Handle("/public/", http.StripPrefix("/public/", http.FileServer(http.Dir("public")))) 
+0

它完全成功了!非常感謝你! – necroface

2

像阿魯娜說,註冊一個靜態文件服務器處理

http.Handle("/public/", http.StripPrefix("/public/", http.FileServer(http.Dir("public")))) 

而在你的HTML使用這些文件,只需

<img src="/public/images/img_landing_page_mac.png">