gpt4 book ai didi

Go:使用 bindata 嵌入 JS 文件

转载 作者:IT王子 更新时间:2023-10-29 01:42:55 27 4
gpt4 key购买 nike

这个问题是我之前的一个问题的后续。我已经关闭了这个问题,所以我希望我在这里问一个新的但相关的问题是可以的。 Go: embed static files in binary

如何使用 go-bindata 提供 JS 文件?我是否像这样将它传递到 html 中

hi.html

<script>{{.Bindata}}></script>

即使我没有编译或 JS 错误,它似乎也不起作用。

最佳答案

使用 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/...

将源文件放在正确的位置

在这种情况下,生成的文件 bindata_assetfs.go 是在 myprojectdirectory 目录中创建的(这是不正确的)。就我而言,我只是手动将文件移动到 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”子目录结构。用

编译

去安装./...

你应该有一个二进制文件来正确地为你的静态 Assets 提供服务。

关于Go:使用 bindata 嵌入 JS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27903565/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com