實作 - 從零開始用 Golang 寫網頁 - 04 靜態網頁的處理方式

[實作] 從零開始用 Golang 寫網頁 : 04 靜態網頁的處理方式

當網頁需要用到 js、css、圖片等時,並不需要透過 HandleFunc 來匹配並透過相對應函式輸出,可以直接使用 Handle 來匹配,不必再透過函式輸出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func main() {
http.HandleFunc("/", myWeb)

staticHandle := http.FileServer(http.Dir("./static"))

http.Handle("/js/", staticHandle)

fmt.Println("服務器即將開啟, 訪問地址 http://localhost:8080")

err := http.ListenAndServe(":8080", nil)

if err != nil {
fmt.Println("服務器開啟錯誤 : ", err)
}
}

main

  • 新增 Handle 來匹配 /js/FileServer 回傳的 ./static/js/

    • 也可以寫在一起
1
http.Handle("/js/", http.FileServer(http.Dir("./static")))
  • 接著在目錄底下建立 static 資料夾,並在 static 資料夾下建立 js 資料夾

    • js 資料夾裡新增 index.js 檔案
1
alert("Javascript running...");
  • 最後在上一篇的 HTML 裡加上 <script></script>
1
2
3
4
5
6
7
8
<html>
<head></head>
<body>
<div>Hello {{.name}}</div>
<div>{{.someStr}}</div>
</body>
<script src="/js/index.js"></script>
</html>
  • 若是想要直接讀取 ./static/ 底下的文件,可以用 StripPrefix 將前綴 /js/ 過濾
1
http.Handle("/js/", http.StripPrefix("/js/", http.FileServer(http.Dir("./static"))))

結果

tags: 實作 Golang 網站
Author: Kenny Li
Link: https://kennyliblog.nctu.me/2020/09/05/Golang-Web4/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.