如何在现有项目中使用go:embed

如何在现有项目中使用go:embed

1. 运行环境

go version go1.16.2 windows/amd64

2. 问题描述?

我想在现有的一个go项目中加入go:embed 来打包前端的html、js等文件。该项目需要通过http模块来启动web服务。简要代码如下:

server := new(Server)
mux := http.NewServeMux()
mux.Handle("/", server)
server.hserver.Handler = mux
addr := fmt.Sprintf("%s:%d", ip, port)
server.hserver.Addr = addr
server.hserver.ListenAndServe()

这个server还会根据前端操作动态执行数据库操作。
现在我想要使用go:embed 将前端文件打包,主要代码如下:

//go:embed static/*
var localfs embed.FS
http.Handle("/", http.FileServer(http.FS(localfs)))
http.ListenAndServe(":8989", nil)

3. 您期望得到的结果?

我的问题是,embed的代码需要启动一个web服务,如何能在不修改原有web服务代码的情况下加入embed的服务?

讨论数量: 2
zhaocrazy
  1. 查阅官方文档:pkg.go.dev/embed 或者通过搜索资料解决
  2. 先要导入embed 包,接着根据文档示例读取你的静态目录,之后执行命令编译即可
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!