gin embed打包静态资源文件
问题
在gin项目中如果单纯的只是实现api接口,那打包出来的是一个可执行文件。但如果项目中如果包含一些页面,则必定会引入一些css,jss,html文件。这样会使打包出来后会挂着对应的静态资源文件夹,部署的时候就要带上这些文件夹,没有api项目打包后只有一个可执行文件那么方便。有什么好的方法能解决这个问题呢。
embed
embed是在Go 1.16中新加包。它通过//go:embed指令,可以在编译阶段将静态资源文件打包进编译好的程序中,并提供访问这些文件的能力。这样就能解决部署带页面的项目时候静态文件的问题了。
使用
// 项目目录
├── Dockerfile
├── README.md
├── asset // 静态资源文件
│ ├── bootstrap.min.css
│ ├── bootstrap.min.js
│ └── j.js
├── go-video
├── go.mod
├── go.sum
├── html // html模版文件
│ └── index.html
└── server.go
package mainimport ("embed""html/template""net/http""github.com/gin-gonic/gin"
)//go:embed html/*
var htmlFS embed.FS//go:embed asset/*
var assetFS embed.FSfunc main() {app := gin.Default()// 推荐:引入js css等 例如j.js 访问地址为 localhost:8080/asset/j.jsapp.Any("/asset/*filepath", func(c *gin.Context) {staticServer := http.FileServer(http.FS(assetFS))staticServer.ServeHTTP(c.Writer, c.Request)})// 不推荐:引入js css等 例如j.js 访问地址为 localhost:8080/asset1/asset/j.js// app.StaticFS("/asset1", http.FS(assetFS))// 引入htmlapp.SetHTMLTemplate(template.Must(template.New("").ParseFS(htmlFS, "html/*")))app.Handle("GET", "/", index)app.Run()
}func index(c *gin.Context) {c.HTML(http.StatusOK, "index.html")
}
gin embed打包静态资源文件相关推荐
- golang将静态资源文件打包进二进制文件
默认情况下,将项目打包成二进制的时候是不会加入静态资源文件的,因此在部署的时候还需要捎带上这些文件,比如,一些配置文件,图片,样式表等. 很多时候,这些静态文件是不需要变的,如果能一并加入到二进制文件 ...
- Golang Gin embed static 静态文件嵌入
Golang Gin embed 静态文件嵌入 需求 改进思路 a). Gin文档 静态资源嵌入 方案 b). Gin 自带方法 代码 效果 c). 改进 1. 自带http库做法 2. 查看gin ...
- golang打包HTML为Android,使用Go开发Web服务,并打包html/js/css等静态资源文件
Go的高性能,使它天生适合开发io方面的服务,Web服务当然不再话下.同时,Go编译后生成的单文件不是字节码,而是对应平台的机器码,因此它效率更高.资源占用更低. 为了更好的进程程序管理,移动程序时更 ...
- vue-cli项目布署问题解决:空白页、静态资源文件404错误、refrenceError:promise未定义(部分浏览器不支持ES6语法)
(前言:文章记录vue-cli项目打包使用IIS布署遇到的几个错误及解决方式) 首先简单理解webpack打包: 个人理解:项目开发中我们构建 "低耦合高内聚" 的组件/模块来代码 ...
- Golang实践录:静态资源文件整合:web服务
趁着五一放假,趁着有时间,把欠的一些技术集中研究研究,写写文章,好给自己一个交待. 本文研究静态资源文件的在 web 服务器的整合. 基础 Golang 中的 web 服务框架有很多种,本文选取 gi ...
- Golang实践录:静态资源文件整合:初步使用
趁着五一放假,趁着有时间,把欠的一些技术集中研究研究,写写文章,好给自己一个交待. 本文介绍如何在 Golang 中整合静态资源文件,将静态资源文件编译到二进制可执行文件中,这与其它程序的打包可能是一 ...
- vue中使用a标签下载静态资源文件(比如excel、pdf等)后端不参与
问题描述 平常我们在项目中需要做下载文件的功能,比如下载excel表格.比如下载pdf文件.比如下载word文档,这样的功能,一般是后端做,即:后端返回一个流文件.或者返回一个url地址- 但是,实际 ...
- python3读取网页_python3+selenium获取页面加载的所有静态资源文件链接操作
软件版本: python 3.7.2 selenium 3.141.0 pycharm 2018.3.5 具体实现流程如下,废话不多说,直接上代码: from selenium import webd ...
- 在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案
在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案 参考文章: (1)在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案 (2)https: ...
最新文章
- BERT在文档级排序中的应用
- windows下配置DNS服务器
- 廖雪峰JavaScript学习笔记(基础及数据类型、变量)
- Json 时间 转换为 Javascript 时间 Date Jquery 调用WCF
- 伪分布式Hadoop2.x集群的搭建1
- C++中实现类似php的UTF8和UrlEncode函数的代码
- OpenCV-图像处理(01、图像的加载、修改与保存)
- Linux环境Hadoop环境搭建
- Windows 7 Sp1 x64 安装英文语言包
- APP与小程序各自优劣势
- 《珞珈山原色植物图谱》高清文字版pdf 附下载链接
- SQL Server 2008 Service Pack 1 - CTP 发布
- 借了你的爱,用我一辈子来还
- java关闭窗口按钮_java swing 使用按钮关闭窗口
- 新闻爬虫步骤python_抓取新闻网站:异步爬虫实现的流程和细节
- poi 设置单元格背景色
- Ucore Lab7
- MySql Povit_MySQL pivot row成动态列数
- mysql管理员默认是什么_配置mysql服务器时,需要设置一个管理员帐号,其默认名称是( )。...
- 小程序border边框样式无效
热门文章
- LED技术50年秘史回顾:从指示灯到街灯
- ubuntu VCS+verdi安装教程
- 2022-07-12 读书笔记:《写给所有人的极简统计学》
- Python基础语法——if选择
- ITIL4 术语词汇表(附下载)
- Artifact xxx:war exploded: Error during artifact deployment.
- 西门子博途V15.0安装更新包UPD4时遇到版本不一致的提示问题及处理对策
- 非管理员用户添加右键菜单(管理员也适用)
- APP安全测试点分析
- 手机突然提示无服务,无法使用蜂窝移动 解决流程