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

项目结构

  • golang mod
 
go mod init github.com/rongfengliang/rice-app
  • 项目结构
├── Makefile
├── README.md
├── go.mod
├── go.sum
├── http-files
│ ├── app.css
│ └── index.html
├── main.go
└── rice-box.go
  • 代码说明
    http-files 为静态资源的位置,我们可以通过代码直接引用,main.go 为入口,Makefile 为通过make 的跨平台编译处理
    rice-box.go 是使用go generate 生成的资源代码
    main.go
 
package main
//go:generate go run github.com/GeertJohan/go.rice/rice embed-go
import (
  "log"
  "net/http"
  rice "github.com/GeertJohan/go.rice"
)
func main() {
  http.Handle("/", http.FileServer(rice.MustFindBox("http-files").HTTPBox()))
  err := http.ListenAndServe(":8080", nil)
  if err != nil {
    log.Fatalln("some wrong will exit")
  }
}​

go.mod

module github.com/rongfengliang/rice-app
go 1.13
require github.com/GeertJohan/go.rice v1.0.0
 

Makefile

build-app: clean make-dir generate build-mac build-linux build-windows
clean:
  rm -rf build/* && rm -rf rice-box.go
generate:
  go generate
make-dir:
  mkdir -p build/{mac,linux,windows}
build-mac:
  CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o build/mac 
build-linux:
  CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o build/linux 
build-windows:
  CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o build/windows

运行&&效果

  • 运行&&构建
make
  • 运行效果
./build/mac/rice-app 

效果

说明

go.rice 在功能上与packr很类似,都是一个很不错的golang 静态资源嵌入工具包

参考资料

https://github.com/GeertJohan/go.rice
https://github.com/rongfengliang/go-rice-learning

go.rice 强大灵活的golang 静态资源嵌入包的更多相关文章

  1. 几个golang 静态资源嵌入包

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

  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. Spring MVC 读取静态资源时404错误

    背景:web.xml配置时拦截策略是拦截所有请求: <servlet> <servlet-name>springmvc</servlet-name> <ser ...

  7. gulp之静态资源防缓存处理

    最近,因为校友网项目开始有些规模了.开始就要考虑对静态资源进行工程自动化的管理.一讲到前端的自动化工具,大家或许都会想到Grunt,Gulp,或者百度的FIS.这三个都有各自的特点,大家可以依据自己的 ...

  8. web站点优化之使用tengine搭建静态资源服务器,静态资源合并加载案例剖析

    在一个项目还是单体架构的时候,所有的js,css,image都会在一个web网站上,看起来并没有什么问题,比如下面这样: 但是当web网站流量起来的时候,这个单体架构必须要进行横向扩展,而在原来的架构 ...

  9. springboot 入门八-自定义配置信息(编码、拦截器、静态资源等)

    若想实际自定义相关配置,只需要继承WebMvcConfigurerAdapter.WebMvcConfigurerAdapter定义些空方法用来重写项目需要用到的WebMvcConfigure实现.具 ...

随机推荐

  1. Spring AOP环绕异常影响的报错

    最近遇到一个问题,异常是: java.lang.ClassCastException: org.springframework.http.ResponseEntity cannot be cast t ...

  2. ros:init()

    ros::init()是ROS程序调用的第一个函数,用于对ROS程序的初始化. ros::init()函数的声明在ROS代码中的./src/ros_comm/roscpp/include/ros/in ...

  3. Ubuntu19 安装 pylearn2

    环境: /etc/issue # Ubuntu 19.10 \n \l python -V # Python 其中,python环境是我自己建立的虚拟 venv 方便测试( 相当于你的python 实 ...

  4. 异步编程的类型系统:promise & future & closure & observable----异步编程类型的结构和操作

    异步编程类型的结构和操作. 上下文维护. A promise represents the eventual result of an asynchronous operation. The prim ...

  5. Docker 快速安装&搭建 Mysql 环境

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  6. 2019-11-29-win10-uwp-手把手教你使用-asp-dotnet-core-做-cs-程序

    原文:2019-11-29-win10-uwp-手把手教你使用-asp-dotnet-core-做-cs-程序 title author date CreateTime categories win1 ...

  7. Asp.NetCoreWebApi入门 - 从零开始新建api项目

    开发环境 打开VS,建立项目 项目结构 修改 StartUp 类代码 ConfigureServices方法 Configure方法 为开发环境和生产环境配置不同的 Startup 新建一个Contr ...

  8. Tornado笔记

    helloworld Tornado特点一句话简介:Tornado是非阻塞式的Web服务器,速度非常快,每秒可以处理数以千计的链接,因此Tornado是实时Web服务的一个理想框架.Tornado因为 ...

  9. vue+element打印页面功能

    项目中遇到了要打印页面的功能,我感之前使用的是一个第三方的插件,但是不兼容IE,后来发现直接调用window的API就可以了,MMP // 打印表单 printBtn() { window.print ...

  10. XSS靶场练习

    0x00:前言 一个XSS练习平台,闯关形式,一共20关 0x01:开始 第一行都是代码插入点,下面几行是payloads(插入点和payloads中间空一行) LV1 <script>a ...