• Gin框架系列之模板与静态文件


    一、模板的使用

    1、加载模板路径

    当使用gin.Default方法创建一个router后需要加载模板路径,加载的方法可以使用:

    • LoadHTMLGlob  只有一个参数,通配符,如:router.LoadHTMLGlob("templates/*"),查找当前项目路径下template文件夹下所有的html文件

    • LoadHTMLFiles 不定长参数,可以传多个字符串,如:router.LoadHTMLFiles("template/index.html","template/user.html"),指定所有要使用的html文件路径

    推荐使用LoadHTMLGlob ,如果存在多级目录可以这样指定:

    两级:engine.LoadHTMLGlob("templates/**/*")
    三级:engine.LoadHTMLGlob("templates/**/**/*")
    ...

    2、挂载路由

    router.GET("/index", Hello)

    3、编写视图函数

    func Hello(ctx *gin.Context)  {
        ctx.HTML(http.StatusOK, "home/index.html","hello home!")
    }

    在试图函数中指定模板路径以及渲染到前端的数据。

    4、模板文件编写

    在项目的template目录下新建home目录然后新建index.html文件:

    {{ define "home/index.html"}}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="/static/css/index.css">
    </head>
    <body>
    <div class="content">{{ . }}</div>
    </body>
    </html>
    {{ end }}

    对于二级以及多级目录需要在文件开头通过define指定文件的路径,否则程序识别不到。

    5、启动程序

    func main()  {
        router := gin.Default()
        // 加载模板路径
        router.LoadHTMLGlob("template/**/*")
    
        router.GET("/index", Hello)
    
        router.Run(":8080")
    }

    通过router.Run方法启动,注意不要在IDE中启动,通过cmd窗口的方式,否则模板找不到。

    二、静态文件的使用

    当使用html时,难免使用到css、js、images等,此时需要一种方式进行引入。

    1、加载静态文件

    func main()  {
        router := gin.Default()
        // 加载模板路径
        router.LoadHTMLGlob("template/**/*")
    
        // 加载静态文件,注意第一个路径参数映射第二个目录参数,所以第一个参数可以随意,但是在html中引入时需要与其保持一致
        router.Static("/static", "static")
    
        router.GET("/index", Hello)
    
        router.Run(":8080")
    }

    2、模板中引入

    {{ define "home/index.html"}}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="/static/css/index.css">
    </head>
    <body>
    <div class="content">{{ . }}</div>
    </body>
    </html>
    {{ end }}

    三、项目说明

    1、项目结构

    demo01
        │  main.go
        │  README.md
        │
        ├─static
        │  ├─css
        │  │      index.css
        │  │
        │  ├─images
        │  └─js
        └─template
            ├─goods
            │      goods.html
            │
            ├─home
            │      index.html
            │
            └─order
                    order.html

    2、主要文件说明

    • main.go
    package main
    
    import (
        "github.com/gin-gonic/gin"
        "net/http"
    )
    
    
    func Hello(ctx *gin.Context)  {
        ctx.HTML(http.StatusOK, "home/index.html","hello home!")
    }
    
    func main()  {
        router := gin.Default()
        // 加载模板路径 二级目录
        router.LoadHTMLGlob("template/**/*")
        // 加载静态文件
        router.Static("/static", "static")
    
        router.GET("/index", Hello)
    
        router.Run(":8080")
    }
  • 相关阅读:
    vue项目的骨架及常用组件介绍
    细谈最近上线的Vue2.0项目(一)
    【请求之密】payload和formData有什么不同?
    【19道XSS题目】不服来战!
    Hexo+Coding搭建免费博客之Hexo代码上传到Coding实现公网访问站点(三)
    Hexo+Coding搭建免费博客之Next主题设置(二)
    Hexo+Coding搭建免费博客之Hexo安装部署(一)
    Openstack-Queens详细安装教程
    ESXI安装报错,No Network adapters were detected...
    VMware ESXi 5.5组件安装过程记录
  • 原文地址:https://www.cnblogs.com/shenjianping/p/16121493.html
Copyright © 2020-2023  润新知