在 Go 專案使用 embed 編譯靜態資源

做法

建立專案。

1
2
mkdir go-vue-template
cd go-vue-template

初始化 Go Modules。

1
go mod init github.com/memochou1993/go-vue-template

建立前端專案。

1
vue create app

編譯前端專案。

1
yarn run build

新增 main.go 檔。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main

import (
"embed"
"io/fs"
"log"
"net/http"
)

//go:embed ui/dist
var ui embed.FS

func main() {
stripped, err := fs.Sub(ui, "ui/dist")
if err != nil {
log.Panic(err)
}
http.Handle("/", http.FileServer(http.FS(stripped)))

log.Panic(http.ListenAndServe(":8000", nil))
}

編譯執行檔。

1
go build

程式碼

參考資料