gin框架没有内置静态文件服务,但可以使用gin.static或gin.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文件的资料请关注代码网其它相关文章!
发表评论