温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Go 1.16 embed特性的简单使用

发布时间:2021-07-19 10:47:17 来源:亿速云 阅读:448 作者:chen 栏目:编程语言

本篇内容介绍了“Go 1.16 embed特性的简单使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

项目结构如下:

└─ui
    └─embed_ui.go
    └─dist
        └─index.html
        └─static
            ├─css
                └─ ...
            ├─fonts
                └─ ...
            └─js
                └─ ...
└─main.go
└─go.mod
//embed_ui.go
package ui

import (
	`embed`
)

//go:embed dist
var WebUI embed.FS
//main.go
// 嵌入普通静态资源
type StaticResource struct {
	// 静态资源
	staticFS embed.FS
	// 设置embed文件到静态资源的相对路径,也就是embed注释里的路径
	path string
}
// 静态资源被访问逻辑
func (_this_ *StaticResource) Open(name string) (fs.File, error) {
	var fullName string
	if strings.Contains(name,`/`){
		fullName = path.Join(_this_.path,"static",name)
	}else{
		fullName = path.Join(_this_.path,name)
	}
	file, err := _this_.staticFS.Open(fullName)
	return file, err
}

func main() {
    // 设置静态资源
    static := &StaticResource{
        staticFS: ui.WebUI,
        path:     "dist",
    }

    engine := gin.Default()
    {
        // 设置
        engine.StaticFS("/static/",http.FS(static))
        // 首页
        engine.GET("/", func(context *gin.Context) {
            context.Writer.WriteHeader(http.StatusOK)
            indexHTML,_ := static.staticFS.ReadFile(static.path + "/" + "index.html")
            context.Writer.Write(indexHTML)
            context.Writer.Header().Add("Accept","text/html")
            context.Writer.Flush()
        })
    }
    engine.Run()
}
[GIN-debug] GET    /static/*filepath         --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (3 handlers)
[GIN-debug] HEAD   /static/*filepath         --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (3 handlers)
[GIN-debug] GET    /                         --> main.main.func1 (3 handlers)
[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default
[GIN-debug] Listening and serving HTTP on :8080
[GIN] 2021/02/17 - 17:37:07 | 200 |       530.8µs |             ::1 | GET      "/"
[GIN] 2021/02/17 - 17:37:07 | 200 |    135.1147ms |             ::1 | GET      "/static/js/chunk-2d0b6337.40e74af5.js"
[GIN] 2021/02/17 - 17:37:07 | 200 |    134.5926ms |             ::1 | GET      "/static/css/chunk-3d4a32e8.4951a1b7.css"
[GIN] 2021/02/17 - 17:37:07 | 200 |    146.7519ms |             ::1 | GET      "/static/css/index.d72cf005.css"
[GIN] 2021/02/17 - 17:37:07 | 200 |    147.2865ms |             ::1 | GET      "/static/js/index.15d7bf17.js"
[GIN] 2021/02/17 - 17:37:07 | 200 |    151.6588ms |             ::1 | GET      "/static/css/chunk-vendors.16da611a.css"
[GIN] 2021/02/17 - 17:37:07 | 200 |    148.8884ms |             ::1 | GET      "/static/js/chunk-vendors.24c0b194.js"
[GIN] 2021/02/17 - 17:37:07 | 200 |            0s |             ::1 | GET      "/static/js/chunk-2d0d69a3.6eb93f6e.js"
[GIN] 2021/02/17 - 17:37:07 | 200 |       364.8µs |             ::1 | GET      "/static/js/chunk-2d0e53c4.94fb2765.js"
[GIN] 2021/02/17 - 17:37:07 | 200 |       382.2µs |             ::1 | GET      "/static/js/chunk-3d4a32e8.ced07e34.js"
[GIN] 2021/02/17 - 17:37:07 | 200 |            0s |             ::1 | GET      "/static/fonts/element-icons.535877f5.woff"

Go 1.16 embed特性的简单使用

“Go 1.16 embed特性的简单使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI