golang里面,怎么使用http://localhost :8000 然后加載出來,我本地做好的HTML 檔案?
uj5u.com熱心網友回復:
可以寫個handleFunc方法,讀取你的HTML檔案,然后http.ResponseWriter直接write讀取的內容uj5u.com熱心網友回復:
嗯嗯,這個我明白,就是,靜態加載HTML 檔案,這個段代碼怎么寫啊
uj5u.com熱心網友回復:
就是普通的讀檔案for example
import (
"io/ioutil"
"fmt"
)
func main() {
s, e := ioutil.ReadFile("/your_path/your_html")
if e != nil {
panic(e)
}
fmt.Println(string(s))
}
uj5u.com熱心網友回復:
老哥 用handleFunc方法,讀取我的HTML檔案,然后http.ResponseWriter直接write讀取的內容再加上你那段
完整的代碼是什么?
uj5u.com熱心網友回復:
老哥 用handleFunc方法,讀取我的HTML檔案,然后http.ResponseWriter直接write讀取的內容
再加上你那段
完整的代碼是什么?
uj5u.com熱心網友回復:
暈,這種都是隨手拈來的代碼,否則也懶得寫了以下是個完整代碼,能直接達到你的需求
import (
"net/http"
"io/ioutil"
"fmt"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
s, e := ioutil.ReadFile("/your_path/your_html") //這個就是讀取你的html
if e != nil {
panic(e)
}
fmt.Fprintf(w, string(s)) //這個就是response
})
server := &http.Server{
Addr : ":8080", //監聽服務器埠
Handler : mux,
}
if e := server.ListenAndServe(); e != http.ErrServerClosed {
fmt.Printf("error was happened: %v." e)
}
fmt.Println("server was shut down.")
}
uj5u.com熱心網友回復:
哈哈 小白萌新在此謝過大佬了 可以了 還缺一個加載css 和js
uj5u.com熱心網友回復:
需求越來越多,用template吧,自己谷歌百度一下怎么用html/templateuj5u.com熱心網友回復:
用gin吧,很方便的uj5u.com熱心網友回復:
web開發用beego或gin web開發框架吧,你說的這些都很方便,如果用原生的,很麻煩,你得自已設計路由框架,mux.HandleFunc("/show" 這樣的,你在瀏覽器訪問的時候只能用http://localhost:8080/show這樣來訪問,http://localhost:8080/Show,http://localhost:8080/SHow...就都不能訪問了,你得自已做 mux.HandleFunc("/",httprouterhandle)func httprouterhandle(w http.ResponseWriter, req *http.Request){
path:=ToLower(req.URL.Path)
switch path{
case "/show":
調你對應的方法
default:
非法的URL
}
}
感謝8樓qybao,我以前提過這問題,是他提供的解決方案
如果你網站的路由URL非常多,那么httprouterhandle里case判斷就得非常多,那得自已寫注冊路由表的功能,類似beego里這樣的代碼:
beego.Router("/pay/gamepay.html", &controllers.GetGamePageStruct{},"get:GetGamePage"),表示對于/pay/gamepay.html這樣的URL請求,get方式訪問映射到&controllers.GetGamePageStruct{},GetGamePageStruct結構體上的方法,然后httprouterhandle里你把path遍歷注冊的路由,找得到就跳到對應注冊的方法里執行,找不到就報非法URL錯誤。
這樣做好麻煩,不如用beego,gin之類的web框架方便。
uj5u.com熱心網友回復:
原生的加載html檔案用模板吧,象這樣func showLoginPage(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
t, _ := template.ParseFiles("goweb/form/login.html")
t.Execute(w, nil)
}
}
詳細的你自已去學模板的功能吧。這里只是最簡單的模板示例
uj5u.com熱心網友回復:
如果是學習,建議看看基礎知識,然后再學習一下流行的web框架。如果只是使用,那就直接用流行的web框架吧。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/119310.html
標籤:go語言
