静态资源嵌入二进制文件中,可以方便我们的软件分发(只需要简单的二进制文件就可以了),目前大部分golang 的
web 应用都是使用类似的方法。
以下是收集到的一些常见方案

github.com/go-bindata/go-bindata

go-bindata 的使用方法是先生成代码,然后使用提供的api引用
使用流程

  • 生成资源代码
  1. go-bindata data/
  • 通用引用
  1. data, err := Asset("pub/style/foo.css")
  1. if err != nil {
  1. // Asset was not found.
  1. }
  1. // use asset data
  • http server 引用
  1. go-bindata -fs -prefix "static/" static/
  1. mux := http.NewServeMux()
  1. mux.Handle("/static", http.FileServer(AssetFile()))
  1. http.ListenAndServe(":8080", mux)

github.com/elazarl/go-bindata-assetfs

go-bindata-assetfs 是go-bindata的包装,也需要生成代码,但是使用更加简单,便捷
使用流程

  • 生成代码
  1. go-bindata-assetfs data/...
  • 资源引用
  1. http.Handle("/", http.FileServer(assetFS()))

github.com/rakyll/statik

也是需要生成代码的

  • 生成代码
  1. statik -src=/path/to/your/project/public
  • 代码引用
  1. import (
  1. "github.com/rakyll/statik/fs"
  1. _ "./statik" // TODO: Replace with the absolute import path
  1. )
  1. // ...
  1. statikFS, err := fs.New()
  1. if err != nil {
  1. log.Fatal(err)
  1. }
  1. // Serve the contents over HTTP.
  1. http.Handle("/public/", http.StripPrefix("/public/", http.FileServer(statikFS)))
  1. http.ListenAndServe(":8080", nil)

github.com/gobuffalo/packr

packr 在使用上就更方便的,导入也很清晰

  • 生成代码
    packr 在开发阶段是不需要生成代码的,我们可以像普通文件的方法使用,当需要嵌入的时候通过工具生成
    就可以自动嵌入了,使用灵活
  1. package main
  1. import (
  1. "fmt"
  1. "github.com/gobuffalo/packr"
  1. )
  1. func main() {
  1. box := packr.NewBox("./templates")
  1. s, err := box.FindString("admin/index.html")
  1. if err != nil {
  1. log.Fatal(err)
  1. }
  1. fmt.Println(s)
  1. }
  • 构建嵌入
  1. packr build

github.com/GeertJohan/go.rice

go.rice 与packr 的使用类似,开发阶段自己查找,编译构建的时候嵌入

  • 使用
  1. box := rice.MustFindBox("cssfiles")
  1. cssFileServer := http.StripPrefix("/css/", http.FileServer(box.HTTPBox()))
  1. http.Handle("/css/", cssFileServer)
  1. http.ListenAndServe(":8080", nil)
  • 编译构建
  1. rice embed-go
  1. go build

说明

以上就是自己目前发现的几个golang比较方便的静态资源嵌入包,后续发现新的再添加完善

参考资料

https://github.com/go-bindata/go-bindata 
https://github.com/elazarl/go-bindata-assetfs 
https://github.com/rakyll/statik 
https://github.com/gobuffalo/packr 
https://github.com/GeertJohan/go.rice

几个golang 静态资源嵌入包的更多相关文章

  1. go.rice 强大灵活的golang 静态资源嵌入包

    以前简单介绍过packr ,statik 等静态资源嵌入工具包的使用,go.rich 是一个与packr 类似的静态资源嵌入包,使用简单 功能强大 项目结构 golang mod   go mod i ...

  2. statik golang 静态资源嵌入二进制文件工具使用(docker 构建)

      将静态资源打包进二进制文件有好多方便的地方 方便客户演示 代码简单加密 运行方便 statik 就是一款在golang 中用的比较多,nodejs 有一款pkg (oclif 就推荐使用此工具) ...

  3. springboot打jar包将引用的第三方包、配置文件(.properties、.xml)、静态资源打在包外

    1.外置配置文件 Springboot读取核心配置文件(.properties)的外部配置文件调用方式为 jar包当前目录下的/config目录 因此要外置配置文件就在jar所在目录新建config文 ...

  4. golang1.16内嵌静态资源指南

    今天是万圣节,也是golang1.16新特性冻结的日子.不得不说自从go2路线发布之后golang新特性的迭代速度也飞速提升,1.16中有相当多的重要更新,包括io标准库的重构,语言内置的静态资源嵌入 ...

  5. [golang]Go内嵌静态资源go-bindata的安装及使用

    使用 Go 开发应用的时候,有时会遇到需要读取静态资源的情况.比如开发 Web 应用,程序需要加载模板文件生成输出的 HTML.在程序部署的时候,除了发布应用可执行文件外,还需要发布依赖的静态资源文件 ...

  6. springmvc获取jar中的静态资源与jar包中的资源互相引用问题

    1.首先看jar中的文件位置 2.在web工程中引用该jar 并且在springmvc文件中配置路径 如果有多个路径可用逗号隔开 3.在web工程找jsp页面如何引用 这样就可以了 关于jar中的资源 ...

  7. html 如何访问 jar 包里面的静态资源(js、css、字体等)

    前言:最近两天在尝试写一个工具 jar 包,里面包含后台处理的 java 代码,包含前端 html.js.css.字体文件等,过程中解决了访问 jar 包里的静态资源问题,所以记录下来. 附:自己的一 ...

  8. Spring MVC配置静态资源和资源包

    Spring MVC配置静态资源和资源包 本例映射:css目录: pom.xml <properties> <spring.version>4.3.5.RELEASE</ ...

  9. Spring MVC配置静态资源和资源包教程

    1- 介绍 这篇教程文章是基于: Spring 4 MVC 2- 创建一个项目 File/New/Other.. 输入: Group ID: com.yiibai Artifact ID: Sprin ...

随机推荐

  1. logstash output时区差8个小时

    logstash版本6.3.2,解决方式如下,不需要修改源码: input { redis { host => "127.0.0.1" port => " p ...

  2. Makefile的简洁模版

    博客地址:http://www.cnblogs.com/zengjianrong/p/4184854.html 为了方便编译零碎的测试代码,在代码的存放目录编辑了一个Makefile,添加新代码文件后 ...

  3. Jenkins集成Sonar Quabe和权限配置

    目录 安装Sonar Jenkins配置sonar Maven Jenkins Job配置 Pipeline Jenkins Job配置 Sonar权限管理 Sonar quality Gate通过阈 ...

  4. Sitecore 十大优秀功能

    为客户的需求创建最佳解决方案是我们的主要目标.良好的设计不仅仅是视觉吸引力,还要确保用户体验简单直观.在设计Sitecore网站时,我们始终牢记这一点  . 以下是一些我最喜欢的功能,可以帮助我们使用 ...

  5. C# 删除文件到回收站

    首先添加Microsoft.VisualBasic引用 程序中引用 Microsoft.VisualBasic.FileIO 来进行处理 Console.WriteLine("删除文件到回收 ...

  6. Notepad++使用护眼便捷小技巧

    Notepad++是一款很好用的写笔记和代码的应用. 我们可以用它来写博客草稿和日常的笔记.那么,长时间看一个界面,当然会对眼睛有伤害. 所以,一个护眼的背景.是必须的. 下面就是我经常用到的护眼色, ...

  7. 2019-11-29-WPF-使用-Win2d-渲染

    原文:2019-11-29-WPF-使用-Win2d-渲染 title author date CreateTime categories WPF 使用 Win2d 渲染 lindexi 2019-1 ...

  8. asp.net webapi 随笔

    第一次写博客,文笔有限,记录下学习的过程 话不多说,直接开干 首先用vs2017建立一个空网站项目,然后只勾选api 项目建立后,如下结构 其中WebApiConfig类配置了路由相关信息 publi ...

  9. beyond compare全文件夹比较,仅显示变化的文件

    beyond  compare是一款非常优秀的文件夹同步比较工具,赞. 非常强大的一点就是给定两个文件夹可以自动列出所有不同的文件和子文件夹,但是有一点可能很多人碰到过,也就是需要一个个点开才能重新比 ...

  10. json串处理2

    请求百度地址坐标:http://api.map.baidu.com/location/ip?ak=y0Yb5ZgGK9blTDbR7Dwh9jGtn6X1YE48&coor=bd09ll&am ...