Gin引入embed

Gin框架引入embed

package main

import (
	"embed"
	"github.com/gin-gonic/gin"
	"html/template"
	"io/fs"
	"net/http"
)

//go:embed templates
var tmpl embed.FS

//go:embed static
var static embed.FS

func main() {
	r := gin.Default()

	t, _ := template.ParseFS(tmpl, "templates/*.html")
	r.SetHTMLTemplate(t)

	fads, _ := fs.Sub(static, "static")
	r.StaticFS("/static", http.FS(fads))

	r.GET("/", func(ctx *gin.Context) {
		ctx.HTML(200, "index.html", gin.H{"title": "Golang Embed 测试"})
	})
	r.Run(":8080")
}

package router

import (
	"embed"
	"github.com/gin-gonic/gin"
	"go-spider-dy/app/controller"
	"go-spider-dy/app/middleware"
	"go-spider-dy/app/pkg/session"
	"html/template"
	"io/fs"
	"net/http"
)

func Instance(staticFs, templateFs embed.FS) *gin.Engine {
   gin.SetMode("debug")
   r := gin.Default()

   t, _ := template.ParseFS(templateFs, "template/**/**/*.html")
   r.SetHTMLTemplate(t)

   fads, _ := fs.Sub(staticFs, "static")
   r.StaticFS("/asset", http.FS(fads))

   r.Static("/download", "download")
   r.Use(gin.Logger())
   r.Use(gin.Recovery())
   r.Use(middleware.Cors())
   r.Use(session.EnableCookieSession("go-spider-dy"))

   r.GET("/", func(c *gin.Context) {
      c.Redirect(http.StatusFound, "/index")
   })
   r.GET("/write", func(c *gin.Context) {
      c.HTML(200,"test.html",nil)
   })
   r.GET("/index", controller.Index)
   r.GET("/pear_config", controller.PearConfig)
   r.GET("/menu_config", controller.MenuConfig)
   r.GET("/spider/list", controller.SpiderList)
   r.GET("/spider/json", controller.SpiderJson)
   r.GET("/spider/add", controller.SpiderAddPage)
   r.POST("/spider/add", controller.SpiderAdd)
   return r
}


package main

import (
	"embed"
	"fmt"
	"go-spider-dy/app/core/db"
	"go-spider-dy/app/router"
	"log"
)

//go:embed template
var templateFs embed.FS

//go:embed static
var staticFs embed.FS

func main() {
	db.Instance()
	port := ":8090"
	r := router.Instance(staticFs, templateFs)

	fmt.Printf(`	欢迎使用 go-spider-dy
	当前版本:V1.0.1
	默认前端文件运行地址:http://127.0.0.1%s
`, port)
	if err := r.Run(port);err != nil{
		log.Fatal(err.Error())
	}
}

前端引用方式:调用static/component/pear/css/pear.css

<link rel="stylesheet" href="/asset/component/pear/css/pear.css" />

最后更新于