问题

在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打包静态资源文件相关推荐

  1. golang将静态资源文件打包进二进制文件

    默认情况下,将项目打包成二进制的时候是不会加入静态资源文件的,因此在部署的时候还需要捎带上这些文件,比如,一些配置文件,图片,样式表等. 很多时候,这些静态文件是不需要变的,如果能一并加入到二进制文件 ...

  2. Golang Gin embed static 静态文件嵌入

    Golang Gin embed 静态文件嵌入 需求 改进思路 a). Gin文档 静态资源嵌入 方案 b). Gin 自带方法 代码 效果 c). 改进 1. 自带http库做法 2. 查看gin ...

  3. golang打包HTML为Android,使用Go开发Web服务,并打包html/js/css等静态资源文件

    Go的高性能,使它天生适合开发io方面的服务,Web服务当然不再话下.同时,Go编译后生成的单文件不是字节码,而是对应平台的机器码,因此它效率更高.资源占用更低. 为了更好的进程程序管理,移动程序时更 ...

  4. vue-cli项目布署问题解决:空白页、静态资源文件404错误、refrenceError:promise未定义(部分浏览器不支持ES6语法)

    (前言:文章记录vue-cli项目打包使用IIS布署遇到的几个错误及解决方式) 首先简单理解webpack打包: 个人理解:项目开发中我们构建 "低耦合高内聚" 的组件/模块来代码 ...

  5. Golang实践录:静态资源文件整合:web服务

    趁着五一放假,趁着有时间,把欠的一些技术集中研究研究,写写文章,好给自己一个交待. 本文研究静态资源文件的在 web 服务器的整合. 基础 Golang 中的 web 服务框架有很多种,本文选取 gi ...

  6. Golang实践录:静态资源文件整合:初步使用

    趁着五一放假,趁着有时间,把欠的一些技术集中研究研究,写写文章,好给自己一个交待. 本文介绍如何在 Golang 中整合静态资源文件,将静态资源文件编译到二进制可执行文件中,这与其它程序的打包可能是一 ...

  7. vue中使用a标签下载静态资源文件(比如excel、pdf等)后端不参与

    问题描述 平常我们在项目中需要做下载文件的功能,比如下载excel表格.比如下载pdf文件.比如下载word文档,这样的功能,一般是后端做,即:后端返回一个流文件.或者返回一个url地址- 但是,实际 ...

  8. python3读取网页_python3+selenium获取页面加载的所有静态资源文件链接操作

    软件版本: python 3.7.2 selenium 3.141.0 pycharm 2018.3.5 具体实现流程如下,废话不多说,直接上代码: from selenium import webd ...

  9. 在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案

    在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案 参考文章: (1)在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案 (2)https: ...

最新文章

  1. BERT在文档级排序中的应用
  2. windows下配置DNS服务器
  3. 廖雪峰JavaScript学习笔记(基础及数据类型、变量)
  4. Json 时间 转换为 Javascript 时间 Date Jquery 调用WCF
  5. 伪分布式Hadoop2.x集群的搭建1
  6. C++中实现类似php的UTF8和UrlEncode函数的代码
  7. OpenCV-图像处理(01、图像的加载、修改与保存)
  8. Linux环境Hadoop环境搭建
  9. Windows 7 Sp1 x64 安装英文语言包
  10. APP与小程序各自优劣势
  11. 《珞珈山原色植物图谱》高清文字版pdf 附下载链接
  12. SQL Server 2008 Service Pack 1 - CTP 发布
  13. 借了你的爱,用我一辈子来还
  14. java关闭窗口按钮_java swing 使用按钮关闭窗口
  15. 新闻爬虫步骤python_抓取新闻网站:异步爬虫实现的流程和细节
  16. poi 设置单元格背景色
  17. Ucore Lab7
  18. MySql Povit_MySQL pivot row成动态列数
  19. mysql管理员默认是什么_配置mysql服务器时,需要设置一个管理员帐号,其默认名称是( )。...
  20. 小程序border边框样式无效

热门文章

  1. LED技术50年秘史回顾:从指示灯到街灯
  2. ubuntu VCS+verdi安装教程
  3. 2022-07-12 读书笔记:《写给所有人的极简统计学》
  4. Python基础语法——if选择
  5. ITIL4 术语词汇表(附下载)
  6. Artifact xxx:war exploded: Error during artifact deployment.
  7. 西门子博途V15.0安装更新包UPD4时遇到版本不一致的提示问题及处理对策
  8. 非管理员用户添加右键菜单(管理员也适用)
  9. APP安全测试点分析
  10. 手机突然提示无服务,无法使用蜂窝移动 解决流程