golang打包的方法:

1、使用go-bindata进行打包:

go-bindata 很简单,设计理念也不难理解。它的任务就是讲静态文件封装在一个 Go 语言的 Source Code 里面,然后提供一个统一的接口,你通过这个接口传入文件路径,它将给你返回对应路径的文件数据。

简单来说就是它可以把我们的静态文件生成 .go 文件,这样就可以编译成二进制文件,项目启动的时候再把这个 .go 文件再释放成静态文件。

使用示例:

打包整个静态目录,使用的时候释放

# 目录结构ConfigTest├── asset│   └── asset.go 静态文件编译之后的go文件├── config # 静态文件目录│   ├── rule.yaml│   └── rule.json├── cli # 运行目录│   ├── config 执行main释放出来的静态文件│   │   ├── rule.yaml│   │   └── rule.json│   └── main # main.go编译之后生成的二进制执行文件└── main 程序目录    └── main.go # 源码

执行命令将静态文件打包成go文件

go-bindata -o=./asset/asset.go -pkg=asset config/...-o # 指定打包后生成的go文件路径-pkg # 指定go文件的包名config/... # 指定需要打包的静态文件路径

2、使用go.rice打包

go.rice 也支持打包静态文件到 go 文件中,但是行为和 go-bindata 很不相同。从使用角度,go.rice 其实是更便捷的静态文件操作库。打包静态文件反而是顺带的功能。

安装

go get github.com/GeertJohan/go.rice/...

使用

go.rice 把一个目录认为是一个 rice.Box 操作

import (    "fmt"    "html/template"    "github.com/GeertJohan/go.rice")func main() {    // 这里写相对于的执行文件的地址    box, err := rice.FindBox("theme/default")    if err != nil {        println(err.Error())        return    }    // 从目录 Box 读取文件    str, err := box.String("post.html")    if err != nil {        println(err.Error())        return    }    t, err := template.New("tpl").Parse(str)    fmt.Println(t, err)}

命令

go.rice 的打包命令是 rice。用起来非常直接:在有使用 go.rice 操作的 go 代码目录,直接执行 rice embed-go:

rice embed-gorice -i "github.com/fuxiaohei/xyz" embed-go // -i 处理指定包里的 go.rice 操作

更多golang知识请关注PHP中文网golang教程栏目。

更多相关文章

  1. golang如何获取目录下文件是否存在
  2. golang读写文件的几种方法
  3. Golang判断文件是否能写入的方法
  4. golang如何读取文件是否存在
  5. golang读取文件是否存在
  6. golang判断是文件还是文件夹
  7. golang如何读取文件
  8. golang如何删除文件?
  9. go语言通过命令方式生成可执行文件

随机推荐

  1. android 通过webservice方式向服务器上传
  2. Android中自定义Dialog常用的两种方式
  3. Android去除默认USB调试授权确认框
  4. android 拍照
  5. Android之手机壁纸的改变
  6. Android学习笔记(四) android 更换桌面壁
  7. Android中编译工具链的改动----LLVM份量
  8. Android调用系统程序
  9. android 中让activity全屏幕显示
  10. android 打开 url 方式