Go gin框架加载Html模板文件的方法

 更新时间:2024年03月19日 09:34:48   作者:龙门吹雪  
这篇文章主要介绍了Go gin框架加载Html模板文件的方法,Gin框架没有内置静态文件服务,但可以使用gin.Static或gin.StaticFS中间件来提供静态文件服务,文中有相关的代码示例供大家参考,需要的朋友可以参考下

Gin框架没有内置静态文件服务,但可以使用gin.Staticgin.StaticFS中间件来提供静态文件服务。

效果图如下:

一、gin 框架加载 Html 模板文件的方法

方式1:加载单个或多个html文件,需要指明具体文件名

r.LoadHTMLFiles("views/index.html")

方式2:加载目录下的所有html文件。如果还有下级目录,则为 【文件名称/**/*】

r.LoadHTMLGlob("views/*")

二、设置静态文件路由

html页面中引用css/js等静态文件,引用文件的相对路径需要映射到工程的相应目录,Gin服务才能将这个文件提供给浏览器。调用的Gin函数为:gin.Static

使用说明:

html文件中的引用路径为href="/a/b/c/styles.css"(见html代码),但在GO项目中 styles.css 文件位于根目录下的 asset/css/styles.css(见工程目录结构)。此时使用函数如下:

r.Static("/a/b/c", "asset/css")

意味着当HTML页面请求 /a/b/c/styles.css 时,Gin将会提供 asset/css/styles.css 文件。

注意:浏览器中获取的css文件,仍然在 /a/b/c/ 目录下(见效果图中的标注)

三、完整代码实现

工程目录结构:

go语言代码:

package main
 
import "github.com/gin-gonic/gin"
 
func main() {
	r := gin.Default()
 
	//方式一: 加载单个或多个html文件,需要指明具体文件名
	// 假设HTML文件位于"views"目录下
	//r.LoadHTMLFiles("views/index.html")
 
	//方式二: 加载 views 目录下的所有html文件。如果还有下级目录,则为 views/**/*
	r.LoadHTMLGlob("views/*")
 
	// 设置静态文件路由   将 html 文件中的请求路径【/asset】 映射到 【asset】目录下
	r.Static("asset", "asset")
	// 将 html 文件中的请求路径【/a/b/c】 映射到 【asset/css】目录下
	r.Static("/a/b/c", "asset/css")
 
	// 设置路由以提供HTML页面
	r.GET("/", func(c *gin.Context) {
		c.HTML(200, "index.html", gin.H{})
	})
 
	// 启动服务器
	r.Run(":8080")
}

html代码:

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  
    <title>登录页面</title>  
    <link rel="stylesheet" href="/a/b/c/styles.css" rel="external nofollow" >  
</head>  
<body>  
    <div class="login-container">  
        <h2>登录</h2>  
        <form id="loginForm">  
            <label for="username">用户名:</label>  
            <input type="text" id="username" name="username" required><br><br>  
  
            <label for="password">密码:</label>  
            <input type="password" id="password" name="password" required><br><br>  
  
            <input type="submit" value="登录">  
        </form>  
    </div>  
  
    <script src="../asset/js/script.js"></script>  
</body>  
</html>

css代码:

body {  
    font-family: Arial, sans-serif;  
    background-color: #f4f4f4;  
}  
  
.login-container {  
    width: 300px;  
    padding: 16px;  
    background-color: white;  
    border-radius: 5px;  
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);  
    position: absolute;  
    top: 50%;  
    left: 50%;  
    transform: translate(-50%, -50%);  
}  
  
h2 {  
    text-align: center;  
}  
  
input[type=text], input[type=password] {  
    width: 100%;  
    padding: 12px 20px;  
    margin: 8px 0;  
    display: inline-block;  
    border: 1px solid #ccc;  
    box-sizing: border-box;  
}  
  
input[type=submit] {  
    width: 100%;  
    background-color: #4CAF50;  
    color: white;  
    padding: 14px 20px;  
    margin: 8px 0;  
    border: none;  
    border-radius: 4px;  
    cursor: pointer;  
}  
  
input[type=submit]:hover {  
    background-color: #45a049;  
}

js代码:

document.getElementById('loginForm').addEventListener('submit', function(event) {  
    // 阻止表单默认的提交行为  
    event.preventDefault();  
  
    // 获取表单输入的值  
    const username = document.getElementById('username').value;  
    const password = document.getElementById('password').value;  
  
    // 创建一个对象来存储登录信息  
    const loginData = {  
        username: username,  
        password: password  
    };  
  
    // 使用fetch API调用登录接口  
    fetch('/user/login', {  
        method: 'POST', // 假设你的登录接口使用POST方法  
        headers: {  
            'Content-Type': 'application/json'  
        },  
        body: JSON.stringify(loginData) // 将登录信息转换为JSON字符串并发送  
    })  
    .then(response => response.json()) // 解析响应为JSON  
    .then(data => {  
        // 根据接口返回的数据处理登录结果  
        if (data.success) {  
            console.log('登录成功');  
            // 在这里你可以做一些登录成功后的操作,比如跳转到另一个页面  
        } else {  
            console.log('登录失败');  
            // 在这里你可以显示错误消息给用户  
        }  
    })  
    .catch(error => {  
        console.error('登录时发生错误:', error);  
        // 在这里你可以处理错误情况,比如显示一个通用的错误消息给用户  
    });  
});

以上就是Go gin框架加载Html模板文件的方法的详细内容,更多关于Go gin框架加载Html文件的资料请关注脚本之家其它相关文章!

相关文章

  • Go语言map字典用法实例分析

    Go语言map字典用法实例分析

    这篇文章主要介绍了Go语言map字典用法,实例分析了map字典的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • Golang strings包常用字符串操作函数

    Golang strings包常用字符串操作函数

    Golang 中的字符串统一使用 UTF-8 (属于Unicode编码的一种实现方式)进行编码,本篇文章将结合具体实例对常用的字符串操作函数进行介绍,感兴趣的可以了解一下
    2021-12-12
  • 一文带你学会使用Go语言实现自己的MCP服务端

    一文带你学会使用Go语言实现自己的MCP服务端

    这篇文章将带大家速览MCP的核心概念,并以Go语言为例,介绍如何开发MCP服务端和客户端,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下
    2025-04-04
  • Golang学习之平滑重启

    Golang学习之平滑重启

    这篇文章主要介绍了Golang学习之平滑重启,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • go语言for循环中嵌套defer的执行顺序

    go语言for循环中嵌套defer的执行顺序

    在Go语言中,defer语句用于延迟函数调用的执行,本文主要介绍了go语言for循环中嵌套defer的执行顺序,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • 解决golang sync.Wait()不执行的问题

    解决golang sync.Wait()不执行的问题

    这篇文章主要介绍了解决golang sync.Wait()不执行的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go并发编程之sync.Once使用实例详解

    Go并发编程之sync.Once使用实例详解

    sync.Once使用起来很简单, 下面是一个简单的使用案例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • Go语言映射内部实现及基础功能实战

    Go语言映射内部实现及基础功能实战

    这篇文章主要为大家介绍了Go语言映射的内部实现和基础功能实战,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2022-03-03
  • go mod的使用方法小结

    go mod的使用方法小结

    本文主要介绍了go mod的使用方法小结,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Go基础系列:Go切片(分片)slice详解

    Go基础系列:Go切片(分片)slice详解

    这篇文章主要介绍了Go语言中的切片(分片)slice详细说明 ,需要的朋友可以参考下
    2022-04-04

最新评论