(原) 思考:如何动态的读取静态打包文件

原创文章,请后转载,并注明出处。

词说得有点绕,需求应该不复杂 。只是思路有点没想好。
就是在做这个[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,然后在代码中根据需要解压?

相关文章