import ( "log" "net/http" ) func main(){ http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("/home/vagrant/go/src/github.com/me/sample/src")))) log.Fatal(http.ListenAndServe(":8080",nil)) }
L /home/vagrant/go/src/github.com/me/sample/src にhtmlファイルを配置する
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> Hello world </body> </html>
$ go run server.go
ほう、Echo使わなくても表示できるやん
これを動的に表示したい
### 動的に表示
import ( "fmt" "log" "net/http" "time" ) func clockHandler(w http.ResponseWriter, r *http.Request){ fmt.Fprintf(w, ` <!DOCTYPE html> <html> <body> It's %d o'clock now. </body> </html> `, time.Now().Hour()) } func main(){ http.HandleFunc("/clock/", clockHandler) http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("/home/vagrant/go/src/github.com/me/sample/src")))) log.Fatal(http.ListenAndServe(":8080",nil)) }
Printfで渡してるだけやな
### データの渡し方
func clockHandler(w http.ResponseWriter, r *http.Request){ t := template.Must(template.ParseFiles("/home/vagrant/go/src/github.com/me/sample/src/clock.html.tpl")) if err := t.ExecuteTemplate(w, "clock.html.tpl", time.Now()); err != nil { log.Fatal(err) } } func main(){ http.HandleFunc("/clock/", clockHandler) http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("/home/vagrant/go/src/github.com/me/sample/src")))) log.Fatal(http.ListenAndServe(":8080",nil)) }
echoでのtemplateと書き方はそんなに変わらんな