当前位置: 首页 > 面试题库 >

在Go程序中捆绑静态资源的最佳方法是什么?

白烨煜
2023-03-14
问题内容

我正在Go中开发一个小型Web应用程序,该应用程序旨在用作开发人员机器上的工具,以帮助调试其应用程序/
Web服务。该程序的界面是一个网页,其中不仅包括HTML,还包括一些JavaScript(用于功能),图像和CSS(用于样式)。我正在计划将此应用程序开源,因此用户应该只需能够运行Makefile,所有资源都将存放在所需的地方。但是,我也希望能够简单地分发具有尽可能少的文件/依赖关系的可执行文件。
是否有将HTML / CSS / JS与可执行文件捆绑在一起的好方法,所以用户只需要下载并担心一个文件?

现在,在我的应用中,提供一个静态文件看起来像这样:

// called via http.ListenAndServe
func html" target="_blank">switchboard(w http.ResponseWriter, r *http.Request) {

    // snipped dynamic routing...

    // look for static resource
    uri := r.URL.RequestURI()
    if fp, err := os.Open("static" + uri); err == nil {
        defer fp.Close()
        staticHandler(w, r, fp)
        return
    }

    // snipped blackhole route
}

因此非常简单:如果所请求的文件存在于我的静态目录中,则调用处理程序,该处理程序仅打开文件并尝试Content- Type在投放之前设置好商品。我的想法是,这没有必要基于真实的文件系统:如果有编译的资源,我可以简单地通过请求URI对其进行索引并按原样提供它们。

如果没有很好的方法来执行此操作,或者我正试图通过这样做来使错误的树吠叫,请告诉我。我只是认为最终用户希望尽可能少地管理文件。

如果还有比go更合适的标签,请随时添加它们或让我知道。


问题答案:

go-bindata软件包看起来可能是您感兴趣的软件包。

https://github.com/go-bindata/go-bindata

它将允许您将任何静态文件转换为可以嵌入到您的代码中的函数调用,并在调用时返回文件内容的字节片。



 类似资料:
  • 问题内容: 我想学习蚂蚁。谁能推荐一些有关此主题的良好学习资源?从在线入门教程到深入的书籍,任何资源都会受到赞赏。 谢谢你的帮助! 问题答案: ant.apache.org。看看手册。 蚂蚁最佳实践 不会花很长时间-蚂蚁并不难。 这是一个示例,可以重用的build.xml开头。它足够通用,可供我重复使用。目录命名约定应易于遵循。我使用的布局模仿IntelliJ的输出。

  • 问题内容: 我正在使用许多静态HTML网站管理旧版网站,没有服务器端脚本,只有纯HTML / CSS,最少的javascript。我发现,在不同页面中多次更改同一段代码非常浪费时间。例如,当菜单中的某些内容发生更改时,由于菜单只是每个文档中的静态文本,因此我必须多次进行相同的更改。 我想知道什么是最好的策略,以最大程度地减少这种开销,换句话说,对于跨多个静态HTML页面管理导航代码之类的建议,您会

  • 问题内容: 哪种方法最适合(更理想的)用于测试非空字符串(在Go中)? 要么: 或者是其他东西? 问题答案: Go的标准库中都使用了这两种样式。 可以在以下软件包中找到:http : //golang.org/src/pkg/strconv/atoi.go 可以在以下包中找到:http : //golang.org/src/pkg/encoding/json/encode.go 两者都是惯用的,而

  • 在许多语言中,例如Java和JavaScript,静态关键字指的是类方法或类变量。 为什么叫'静态'方法?为什么不叫'蓝色'方法?或者'全局'方法? 关键字从何而来?那个面额的来源是什么? 和编译器有关吗?

  • 本文向大家介绍SpringMVC访问静态资源的方法,包括了SpringMVC访问静态资源的方法的使用技巧和注意事项,需要的朋友参考一下 在SpringMVC中常用的就是Controller与View。但是我们常常会需要访问静态资源,如html,js,css,image等。 默认的访问的URL都会被DispatcherServlet所拦截,但是我们希望静态资源可以直接访问。该肿么办呢? 在配置文件:

  • 问题内容: PHP中最新的静态绑定到底是什么? 问题答案: 您肯定需要阅读PHP手册中的Late Static Bindings 。但是,我将为您提供一个简短的摘要。 基本上,可以归结为以下事实:关键字不遵循相同的继承规则。 始终解析为使用它的类。这意味着,如果您在父类中创建方法并从子类中调用该方法,则不会像您期望的那样引用该子项。 后期静态绑定为关键字引入了新用法,从而解决了这一特殊缺点。当您使