Gin框架實戰——HTML渲染 最近使用Go的Gin框架做了個簡單的前端網頁,記錄一下細節~ 1.載入靜態文件 由於網頁需要使用css、圖片等渲染,而靜態文件必須先聲明:否則模板中調用載入不出來,這個很重要,即使你把文件放到對應路徑下,html中也寫了相應的路徑,但是開啟go服務端的網頁,會顯示不出 ...
Gin框架實戰——HTML渲染
最近使用Go的Gin框架做了個簡單的前端網頁,記錄一下細節~
1.載入靜態文件
由於網頁需要使用css、圖片等渲染,而靜態文件必須先聲明:否則模板中調用載入不出來,這個很重要,即使你把文件放到對應路徑下,html中也寫了相應的路徑,但是開啟go服務端的網頁,會顯示不出來樣式、圖片等。因此需要載入靜態文件。
//Default返回一個預設的路由 r := gin.Default() r.StaticFS("/public", http.Dir("D:\\Gotest\\web1\\web\\static")) //相當於更換路徑。載入靜態文件 r.StaticFS("/fonts", http.Dir("D:\\Gotest\\web1\\web\\static\\fonts")) //相當於更換路徑。載入靜態文件 /* 設置靜態文件夾綁定:
r.Static(路由,靜態文件夾)另外一種寫法:r.StaticFS("/static"路由,http.Dir("static")資源)
設置單個靜態文件: r.StaticFile(路由,資源) */
eg:
router := gin.Default()
router.Static("/assets", "./assets")
router.StaticFS("/more_static", http.Dir("my_file_system"))
router.StaticFile("/favicon.ico", "./resources/favicon.ico")
這裡的載入資源,我的理解是更換路徑,本地的文件路徑,換成工程里設置的路徑。
有兩種方式:①r.Static(路由,靜態文件夾)另外一種寫法:r.StaticFS("/static"路由,http.Dir("static")資源)
這種方法是載入一個文件下所有的文件,但是不載入文件裡子文件的內容。如使用
r.StaticFS("/public",http.Dir(./static))
載入下圖的static文件夾下的文件,main.css、admin_login.css、common.css可以使用public/main.css路徑代替原有路徑,然後public/fonts文件貌似裡面的內容載入不出來,所以,不知道是不是我的問題,我認為是只能載入文件夾下的文件,而不能載入文件夾下文件裡面的文件(不能遞歸)。
使用router.StaticFile("/favicon.ico", "./resources/favicon.ico")載入單個文件,就是那個文件的路徑換成StaticFile函數里第一個參數的路徑即可。
2.HTML渲染
使用LoadHTMLGlob載入html文件,使用get/post方法從html文件里獲取前端數據。
controller.IndexController函數為:
func IndexController(c *gin.Context) { c.HTML(http.StatusOK, "login.html", gin.H{ "Title": "開元十年", }) }
這個函數表示為,http的狀態碼為StatusOK時,載入login.html文件。效果圖為:
參考文章:
https://zhuanlan.zhihu.com/p/484462011
https://blog.csdn.net/m764395448/article/details/109113426?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167371151716800213068248%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167371151716800213068248&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-109113426-null-null.142^v71^pc_new_rank,201^v4^add_ask&utm_term=gin%E6%A1%86%E6%9E%B6&spm=1018.2226.3001.4187