前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >gin使用embed打包html

gin使用embed打包html

作者头像
sofu456
发布2023-07-10 16:26:55
5090
发布2023-07-10 16:26:55
举报
文章被收录于专栏:sofu456sofu456

embed

使用类似的注释打包html文件

//go:embed pages/dist/*

打包的代码如下

代码语言:javascript
复制
package main

import (
	"embed"
	"io/fs"
	"net/http"

	"github.com/gin-gonic/gin"
)

//go:embed pages/dist/*
var embedFs embed.FS

func main() {
	e := gin.Default()
	fpages, _ := fs.Sub(embedFs, "pages")
	fdist, _ := fs.Sub(fpages, "dist")
	fjs, _ := fs.Sub(fdist, "js")
	fcss, _ := fs.Sub(fdist, "css")
	e.StaticFS("/js", http.FS(fjs))
	e.StaticFS("/css", http.FS(fcss))
	e.GET("/", func(c *gin.Context) {
		c.FileFromFS("/", http.FS(fdist))
	})
	e.Run()
}

浏览器在请求服务端页面时,根据url匹配文件

io.fs.open(“/”)

返回"/“路径下所有的文件,不会递归遍历,所有c.FileFromFS(”/", http.FS(fdist))返回更目录中的所有文件


下面代码中的js和css文件在单独的目录里面,使用"/"无法访问

代码语言:javascript
复制
<!doctype html>
<html lang="">

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <link rel="icon" href="/favicon.ico">
    <title>pages</title>
    <script defer="defer" src="/js/chunk-vendors.87e17c26.js"></script>
    <script defer="defer" src="/js/app.cf230781.js"></script>
    <link href="/css/app.2cf79ad6.css" rel="stylesheet">
</head>

<body><noscript><strong>We're sorry but pages doesn't work properly without JavaScript enabled. Please enable it to
            continue.</strong></noscript>
    <div id="app"></div>
</body>

</html>

添加静态文件服务器

e.StaticFS(“/js”, http.FS(fjs)) e.StaticFS(“/css”, http.FS(fcss))

或者修改html相对路径,保证文件能在"/"路径中所有搜索到或者在静态文件服务器中找到。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • embed
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档