Gin整合template
主要用到的方法来配置html的目录
router.HTMLRender = gintemplate.New(gintemplate.TemplateConfig{
Root: "views/demo",
Extension: ".html",
})
内部的结构体
type TemplateConfig struct {
Root string //模板文件所在的根目录
Extension string //模板文件的扩展名
Master string //模板文件的主模板文件名
Partials []string //模板文件的局部模板文件名
Funcs template.FuncMap //模板函数映射表
DisableCache bool //是否禁用模板缓存
Delims Delims //模板标识符(分隔符)
}
项目目录结构
EntDemo
- app
- controller
- models
- service
- routers
- router.go
- router_group
- demo_router.go
- go.mod
- start.go
- views
- demo
- demo.html
- demo
主要记录配置template
start.go
import (
"Ent_Demo/ent"
"Ent_Demo/routers"
"context"
"fmt"
gintemplate "github.com/foolin/gin-template"
"github.com/gin-gonic/gin"
_ "github.com/go-sql-driver/mysql"
"golang.org/x/sync/errgroup"
"log"
"net/http"
"time"
)
func main() {
var g errgroup.Group
g.Go(func() error {
return background().ListenAndServe()
})
if err := g.Wait(); err != nil {
fmt.Println(err)
}
}
func background() *http.Server {
gin.SetMode(gin.DebugMode)
router := routers.InitBackGroundRouter()
router.HTMLRender = gintemplate.New(gintemplate.TemplateConfig{//配置目录为view/demo文件夹下面
Root: "views/demo",
Extension: ".html",
})
server := &http.Server{
Handler: router,
Addr: ":8100",
ReadTimeout: 60 * time.Second,
WriteTimeout: 60 * time.Second,
}
return server
}
router.go
package routers
import (
"Ent_Demo/routers/router_group"
"github.com/gin-gonic/gin"
"net/http"
)
func InitBackGroundRouter() *gin.Engine {
router := gin.Default()
router.Use(Recover)
v1 := router.Group("/demo")//路由分组为demo
router_group.DemoRouter(v1)
return router
}
func Recover(c *gin.Context) {
defer func() {
if r := recover(); r != nil {
c.JSON(http.StatusOK, gin.H{
"status": 201,
"msg": "error",
"data": nil,
})
//终止后续接口调用,不加的话recover到异常后,还会继续执行接口里后续代码
c.Abort()
}
}()
//加载完 defer recover,继续后续接口调用
c.Next()
}
demo_router.go
package router_group
import (
"Ent_Demo/app/controller/demo"
"github.com/gin-gonic/gin"
)
func DemoRouter(v1 *gin.RouterGroup) {
v1.GET("/helloworld", demo.GetHelloWorld)
v1.GET("/userlist", demo.GetUserList)
v1.GET("/allfollowers", demo.GetAllUserWithFollowers)
v1.POST("/post_user", demo.CreateUser)
v1.POST("/post_pet", demo.PostPet)
v1.GET("/demo_test_template", demo.GetTest)
}
demo_controller.go
func GetTest(c *gin.Context) {
c.HTML(200, "demo", "")//views/demo/demo.html
}
views/demo/demo.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo</title>
</head>
<body>
<h1>template.html,测试一下前端页面是否配置好</h1>
</body>
</html>
访问http://localhost:8100/demo/demo_test_template即可