HTML渲染_Gin中文文档_html渲染成图片

如何使用Golang的Gin框架渲染HTML页面

使用Golang流行的web框架Gin渲染HTML模板页面的简单例子

Gin是Golang最流行的web框架之一。我之前已经写过如何使用Golang基础模板包渲染HTML页面。使用Gin渲染HTML模板更加简单。

为了使工作流更加顺畅,尝试新的想法并进行调试,我还决定使用Codegangsta的自动重载工具Gin。

安装Gin

安装Gin HTTP web框架就像安装大多数(如果不是所有)Golang包一样简单:

go get -u github.com/gin-gonic/gin

Gin 代码

package main

import (
    &#;html/template&#;
    &#;net/http&#;
    &#;strings&#;

    &#;github.com/gin-gonic/gin&#;
)

func main() {
    router := gin.Default()
    router.SetFuncMap(template.FuncMap{
        &#;upper&#;: strings.ToUpper,
    })
    router.Static(&#;/assets&#;, &#;./assets&#;)
    router.LoadHTMLGlob(&#;templates/*.html&#;)

    router.GET(&#;/&#;, func(c *gin.Context) {
        c.HTML(http.StatusOK, &#;index.html&#;, gin.H{
            &#;content&#;: &#;This is an index page...&#;,
        })
    })

    router.GET(&#;/about&#;, func(c *gin.Context) {
        c.HTML(http.StatusOK, &#;about.html&#;, gin.H{
            &#;content&#;: &#;This is an about page...&#;,
        })
    })
    router.Run(&#;localhost:&#;)
}

引入的包

在第4到7行,我们引入了一些包:

  • o Gin HTTP web框架的包。
  • o Golang的html/template基础包,用于引入FuncMap()函数。在模板中使用函数时需要此函数。
  • o 与Gin一起使用的Golang net/http基础包。
  • o strings基础包,用于FuncMap中的upper函数。

main()函数

在第行,我们创建了一个名为router的默认Gin路由。默认的Gin路由使用日志和恢复中间件,以及基本功能。

在第到行,使用SetFuncMap()创建一个供模板使用的函数映射。这里我们添加了一个简单的模板函数upper,它使用strings.ToUpper()函数将字符串中的所有字符设置为大写。

在第行,我们让Gin路由知道我们在./assets目录中保存了一些静态资产。Gin可以以这种方式访问任何静态资源。

在这个例子中,我在那个目录中放了一个Bulma CSS库的最小版本。通过使用Static()函数,现在HTML模板可以访问这个库。

在第行,所有满足template/*.html模式的模板都由LoadHTMLGlob()函数加载。这个模式意味着模板文件应该有.html的扩展名,并且位于/template目录中。

在第到行,我们告诉Gin路由接受URL路径/上的HTTP GET方法请求。当收到请求时,Gin发送一个HTTP OK状态消息,并用gin.H{}括号内提供的数据渲染index.html模板。在这种情况下,数据只包括一个键/值对,键名为content

在第到行,与上面类似,我们告诉Gin路由接受/about路径上的HTTP GET方法请求。这次渲染的是about.html模板。

在第行,我们让Gin在localhost端口上运行web服务器。

模板和目录结构

下面你可以找到本例中使用的四个模板。这些模板每个都需要在自己的文件中。每段代码之前都有文件名。

模板的语法与html/template基础包中的相同。你可以我之前的文章中阅读更多关于模板语法的内容。

// header.html
{{define &#;header.html&#;}}
<!DOCTYPE html>
<html>
<head>
    <meta charset=&#;utf-8&#;>
    <meta name=&#;viewport&#; content=&#;width=device-width, initial-scale=1&#;>
    <link rel=&#;stylesheet&#; type=&#;text/css&#; href=&#;/assets/bulma.min.css&#;>
    <title></title>
</head>
<body>
<div class=&#;container&#;>
<br><br>
{{end}}
  

// footer.html
{{define &#;footer.html&#;}}
</div>
</body>
</html>
{{end}}


// index.html
{{template &#;header.html&#;}}
<h1 class=&#;title&#;>
    INDEX PAGE
</h1>
<p>{{ .content }}</p>
{{template &#;footer.html&#;}}


// about.html
{{template &#;header.html&#;}}
<h1 class=&#;title&#;>
    ABOUT PAGE
</h1>
<p>{{ .content | upper}}</p>
{{template &#;footer.html&#;}}

自动重载Gin

如前所述,我在开发时使用codegangsta/gin工具来自动重载gin。这使得在浏览器中检查我们代码的结果变得更加容易。当我们改变了代码,无需停止当前的可执行文件,重新构建和运行它,就可以做到这一点。

以下是Github页面上对这个工具的描述:

gin是一个简单的命令行工具,用于实时重新加载Go web应用程序。只需在你的应用程序目录下运行gin,你的web应用就会以gin作为代理来服务。gin会在检测到更改时自动重新编译你的代码。下次它接收到HTTP请求时,你的应用将会重启。

安装codegangsta/gin

go get github.com/codegangsta/gin

运行codegangsta/gin

gin -i --appPort  --port  run main.go

上述代码需要在命令行中运行。它假设你正在localhost端口上运行你的Go web应用,并且你将使用端口作为Gin自动重载代理。

关于运行代码的注意事项

在从命令行运行代码之前,你可能需要运行以下命令:

go mod init
go mod tidy

在网页浏览器中检查结果

在浏览器的URL字段中输入以下内容以检查代码的结果:

localhost:/

…对于索引页面,和…

localhost:/about

对于关于页面。

列表清单

请记住,始终保持学习的态度,并享受编码的乐趣!祝您编码愉快!

如果你喜欢我的文章,点赞,关注,转发!

原文链接:,转发请注明来源!