有志者,事竟成!如果你在学习Golang,那么本文《在 gin 中使用 go-assets 的示例》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~
问题内容我希望为 go-app 提供一个二进制文件,而不是在部署时捆绑静态文件。
我正在使用这样的函数来访问我正在加载的 png:
func getFileList(dir string) (fileList []os.FileInfo, err error) {
// USAGE:
// fileList,_ := getFileList(PNG_DIR)
f, err := os.Open(PNG_DIR)
defer f.Close()
checkErr(err)
fileList, err = f.Readdir(0)
checkErr(err)
return fileList, err
}
我获取此文件列表并通过一些逻辑在静态端点上提供它。
我已阅读以下有关使用 go-assets 的文档
- https://github.com/jessevdk/go-assets-builder/blob/master/builder.go
- https://github.com/jessevdk/go-assets-builder
- https://github.com/jessevdk/go-assets/blob/master/generate.go
以及这个杜松子酒的具体示例:
- https://github.com/gin-gonic/gin/blob/master/examples/assets-in-binary/assets.go
- https://github.com/jessevdk/go-assets/blob/master/example_test.go
- https://github.com/gin-gonic/gin/tree/master/examples/assets-in-binary
其中包含以下示例:
准备包裹 去获取 github.com/gin-gonic/gin 去获取 github.com/jessevdk/go-assets-builder 生成assets.go go-assets-builder html -o assets.go 搭建服务器 go build -o 二进制资产 跑步 ./二进制资产
但是,我不清楚如何调用我构建的这个文件。例如,我应该在 getfilelist()
函数中进行哪些更改,以便现在指向我在二进制文件中构建的任何内容,它甚至被称为什么以及我如何知道这一点?
解决方案
通常在杜松子酒上你会使用 router.statuc(path, dir)
但是你说你首先加载文件列表,我想你稍后会使用 http.servefile
。
使用 go-bindata
,您已经拥有可执行文件中的所有文件,您可以使用 asset(file)
函数访问它们...
基本上,这是一个非常简单的杜松子酒静态处理程序:
func StaticHandler(c *gin.Context) {
p := c.Param("filepath")
data, err := Assets(p)
if err != nil { return }
c.Writer.Write(data)
}
您可以将静态处理程序注册到路由器中:
router.get("/static/*filepath", statichandler)
这允许通过以下方式访问静态资源:/static/css/style.css
并将加载文件 css/style.css
您可以获取文件夹内的文件列表,创建一个映射并将该映射用于静态处理程序(以限制访问哪些文件)
到这里,我们也就讲完了《在 gin 中使用 go-assets 的示例》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注编程网公众号,带你了解更多关于的知识点!