这个问题是我之前的一个问题的后续。我已经结束了这个问题,所以我希望我可以在这里问一个新的但相关的问题。Go: embed static files in binary
如何使用go-bindata服务JS文件?我要像这样把它传递到html中吗?
hi.html
<script>{{.Bindata}}></script>即使我没有编译或JS错误,似乎也不能工作。
发布于 2016-04-12 21:56:21
使用https://github.com/elazarl/go-bindata-assetfs
假设您具有以下结构:
myprojectdirectory
├───api
├───cmd
├───datastores
└───ui
├───css
└───js其中ui是您想要包装并打包到应用程序中的目录结构……
生成源文件
go-bindata-assetfs工具非常简单。它将查看您传递给它的目录,并生成一个源文件,其中的变量可以包含这些文件中的二进制数据。因此,请确保您的静态文件在那里,然后从myprojectdirectory运行以下命令
go-bindata-assetfs ./ui/...
现在,默认情况下,这将在main包中创建一个源文件。有时候,这是可以的。在我的例子中,它不是。如果你愿意,你可以用不同的包名生成一个文件:
go-bindata-assetfs.exe -pkg cmd ./ui/...
将源文件放在正确的位置
在这种情况下,会在myprojectdirectory目录中创建生成的文件bindata_assetfs.go (这是错误的)。在我的示例中,我只是手动将文件移动到cmd目录。
更新您的应用程序代码
在我的应用程序中,我已经有了一些代码来服务于目录中的文件:
import (
"net/http"
"github.com/gorilla/mux"
)
// Create a router and setup routes
var Router = mux.NewRouter()
Router.PathPrefix("/ui").Handler(http.StripPrefix("/ui", http.FileServer(http.Dir("./ui"))))
// Start listening
http.ListenAndServe("127.0.0.1:3000", Router)首先,要确保这样的东西能正常工作。然后,将FileServer行更改为:
Router.PathPrefix("/ui").Handler(http.StripPrefix("/ui", http.FileServer(assetFS())))编译应用程序
现在,您有了一个生成的源文件,其中包含静态资源。您现在可以安全地删除'ui‘子目录结构。使用编译
go install ./...
你应该有一个能为你的静态资产提供正确服务的二进制文件。
发布于 2015-01-12 23:48:52
使用https://github.com/elazarl/go-bindata-assetfs
从自述文件中:
go-bindata-assetfs data/...在您的代码中设置带有文件服务器的路由
http.Handle("/", http.FileServer(assetFS()))发布于 2015-01-14 09:52:03
我在这里得到了答案:Unescape css input in HTML
var safeCss = template.CSS(`body {background-image: url("paper.gif");}`)https://stackoverflow.com/questions/27903565
复制相似问题