Bundling Template dan Asset pada Fiber Golang
Keunggulan dari Go adalah membuat single static binary. Artinya aplikasi yang dibuat dapat dideploy dalam bentuk satu file saja.
Masalahnya file template biasanya bukan file .go
sehingga normalnya tidak ikut
terkompilasi dalam 1 binary. Sehingga file template dan asset lainya harus
berada beriringan dengan file executable.
Dengan menggunakan magic comment go:embed
(psst sebenarnya ini adalah
pragma atau di Java dikenal sebagai annotation) developer dapat meng-embed
file-file selain .go
tanpa memerlukan library packager pihak ke-tiga.
go:embed
memerlukan Golang versi 1.16 ke atas.
Embed Template
Misalkan terdapat proyek MVC dengan file template di folder views
. Buatlah
global variable bertipe embed.Fs
dengan magic comment //go:embed
dan
dilanjutkan dengan lokasi file/folder.
//go:embed views/*
var viewsfs embed.FS
Template Engine Fiber
engine := html.NewFileSystem(http.FS(viewsfs), ".html")
Kode di atas membuat instance template engine html
dari Fiber.
http.FS(viewsfs)
meng-convert file system dari go:embed
menjadi FileSystem
dari http
.
Fiber App
app := fiber.New(fiber.Config{
Views: engine,
ViewsLayout: "views/main-layout",
})
Aplikasi fiber pun dapat digunakan dan dapat dibuild menjadi satu binary.