词说得有点绕,需求应该不复杂 。只是思路有点没想好。
就是在做这个[Hugo工具](/it/2022/101720-hugo/)的时候想到的:
如何把站点打包成为一个文件呢?
毕竟我这种喜欢绿色的人,看着目录下这么多文件有点“不便携”。
我只需要:1.配置文件 2.工具程序 3.网站数据 这三个文件,就把所有功能都带走,岂不快哉。
比如,我把网站数据的目录全打包为assets.go这种单一资源文件。但我应该如何在程序中读取使用呢?
看来对打静态包还是没太理解好。
我尝试自己来实现静态文件(这里使用了gin),其实就是直接把文件给丢出去。
r.GET("/*name", fileServer)
func fileServer(c *gin.Context) {
file := c.Param("name")
if file == "" {
file = "index.html"
} else {
if strings.HasSuffix(file, "/") { // 取消最后的路径符
tmp := []byte(file)
file = string(tmp[0 : len(tmp)-1])
}
}
c.File(rootDir + "/" + file)
}
接下来需要搞明白如何读取assets这种资源文件,然后把它变成内容,替换掉c.File。
搜索到一个可以动态执行go脚本的库:https://github.com/pkujhd/goloader
或者换个思路:将静态文件zip,然后在代码中根据需要解压?