GO打包静态资源和配置文件

起因

  • 想着将一些配置文件打包到go执行文件内,携带便捷。并且有一些配置敏感信息也不便泄露。
  • 我的配置文件调用使用的是

打包工具产品

执行操作

go-bindata

https://github.com/elazarl/go-bindata-assetfs
https://cloud.tencent.com/developer/article/1513361
https://www.cnblogs.com/landv/p/11577213.html
https://www.golangtc.com/t/5ea7e741b17a82158d8ba9fe go-bindata -o assets/resource/dist.go -pkg resource resource/dist/... https://github.com/sunshinev/go-sword

  • 安装静态资源打包工具
# 安装
go get -u github.com/go-bindata/go-bindata/...

#验证是否安装  如果未执行成功,请验证下你的GOBIN变量和环境变量是否设置。
go-bindata --version

# 
go-bindata -o assets/resource/dist.go -pkg resource resource/dist/...

go-bindata -o assets/stub/stub.go -pkg stub stub/...

go-bindata -o assets/view/view.go -pkg view view/...
  • 实战实例
D:.
├─.idea
│  └─dataSources
├─bindata
│  └─conf
├─conf
├─middleware
│  ├─cors
│  ├─jwt
│  └─makerToken
├─models
├─pkg
│  ├─comm
│  ├─e
│  ├─setting
│  └─util
├─resources
│  ├─database
│  ├─runtime
│  ├─static
│  │  └─json
│  └─templates
│      └─maker
└─routers
    ├─ad
    ├─demo
    ├─maker
    └─swagger
    
# 执行将conf/app.ini 打包为bindata/conf/app.go文件 #包名 package conf 
go-bindata -o bindata/conf/app.go -pkg conf conf/app.ini

#引用事例 pkg/setting/setting.go 文件内容

import "xx-assist/bindata/conf"

func init() {
	var err error
	asset, err := conf.Asset("conf/app.ini")  
	if err != nil {
		log.Fatalf("Fail to Asset parse 'conf/app.ini': %v", err)
	}
	log.Printf("asset: %T %v\n", asset, string(asset))
	Cfg, err = ini.ShadowLoad(asset)
  
  	//Cfg, err = ini.ShadowLoad("conf/app.ini")
	if err != nil {
		log.Fatalf("Fail to parse 'conf/app.ini': %v", err)
	}

	LoadBase()
	LoadServer()
	LoadApp()
	LoadMaker()
	LoadAd()
	LoadTools()
	LoadSwagger()
}

# pkg/setting/setting.go 内容结束
go-bindata -o bindata/resources/templates/templates.go -pkg templates resources/templates/...


#三个点代表递归的将路径下的目录和文件加载进来  (大文件打包后goland是无法加载的,所以会在语法提示上爆红)
#爆红后实际运行没问题。
go-bindata -o bindata/resources/static/json/swaggers.go -pkg swaggers resources/static/json/...
#生成文件
bindata/resources/static/json/swaggers.go
#使用 routers/swagger/swagger.go 文件内容
import "apipost-assist/bindata/resources/static/json"

//新方法 http://localhost:20222/api/swagger/info3
func Info(c *gin.Context) {
	f := c.Param("f")
  //获取文件地址 setting.SPath = resources/static/json/
	filePath := fmt.Sprintf("%vswagger%v.json", setting.SPath, f)
  
  //filePath = resources/static/json/swagger1.json
	b, err := swaggers.Asset(filePath) //resources/static/json/swagger1.json
  
	c.String(http.StatusOK, string(b))
	return
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值