最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2024年03月19日 09:34:48   作者:龍門吹雪  
這篇文章主要介紹了Go?gin框架加載Html模板文件的方法,Gin框架沒有內(nèi)置靜態(tài)文件服務(wù),但可以使用gin.Static或gin.StaticFS中間件來提供靜態(tài)文件服務(wù),文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下

Gin框架沒有內(nèi)置靜態(tài)文件服務(wù),但可以使用gin.Staticgin.StaticFS中間件來提供靜態(tài)文件服務(wù)。

效果圖如下:

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

方式1:加載單個或多個html文件,需要指明具體文件名

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

方式2:加載目錄下的所有html文件。如果還有下級目錄,則為 【文件名稱/**/*】

r.LoadHTMLGlob("views/*")

二、設(shè)置靜態(tài)文件路由

html頁面中引用css/js等靜態(tài)文件,引用文件的相對路徑需要映射到工程的相應(yīng)目錄,Gin服務(wù)才能將這個文件提供給瀏覽器。調(diào)用的Gin函數(shù)為:gin.Static

使用說明:

html文件中的引用路徑為href="/a/b/c/styles.css"(見html代碼),但在GO項目中 styles.css 文件位于根目錄下的 asset/css/styles.css(見工程目錄結(jié)構(gòu))。此時使用函數(shù)如下:

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

意味著當(dāng)HTML頁面請求 /a/b/c/styles.css 時,Gin將會提供 asset/css/styles.css 文件。

注意:瀏覽器中獲取的css文件,仍然在 /a/b/c/ 目錄下(見效果圖中的標(biāo)注)

三、完整代碼實現(xiàn)

工程目錄結(jié)構(gòu):

go語言代碼:

package main
 
import "github.com/gin-gonic/gin"
 
func main() {
	r := gin.Default()
 
	//方式一: 加載單個或多個html文件,需要指明具體文件名
	// 假設(shè)HTML文件位于"views"目錄下
	//r.LoadHTMLFiles("views/index.html")
 
	//方式二: 加載 views 目錄下的所有html文件。如果還有下級目錄,則為 views/**/*
	r.LoadHTMLGlob("views/*")
 
	// 設(shè)置靜態(tài)文件路由   將 html 文件中的請求路徑【/asset】 映射到 【asset】目錄下
	r.Static("asset", "asset")
	// 將 html 文件中的請求路徑【/a/b/c】 映射到 【asset/css】目錄下
	r.Static("/a/b/c", "asset/css")
 
	// 設(shè)置路由以提供HTML頁面
	r.GET("/", func(c *gin.Context) {
		c.HTML(200, "index.html", gin.H{})
	})
 
	// 啟動服務(wù)器
	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) {  
    // 阻止表單默認(rèn)的提交行為  
    event.preventDefault();  
  
    // 獲取表單輸入的值  
    const username = document.getElementById('username').value;  
    const password = document.getElementById('password').value;  
  
    // 創(chuàng)建一個對象來存儲登錄信息  
    const loginData = {  
        username: username,  
        password: password  
    };  
  
    // 使用fetch API調(diào)用登錄接口  
    fetch('/user/login', {  
        method: 'POST', // 假設(shè)你的登錄接口使用POST方法  
        headers: {  
            'Content-Type': 'application/json'  
        },  
        body: JSON.stringify(loginData) // 將登錄信息轉(zhuǎn)換為JSON字符串并發(fā)送  
    })  
    .then(response => response.json()) // 解析響應(yīng)為JSON  
    .then(data => {  
        // 根據(jù)接口返回的數(shù)據(jù)處理登錄結(jié)果  
        if (data.success) {  
            console.log('登錄成功');  
            // 在這里你可以做一些登錄成功后的操作,比如跳轉(zhuǎn)到另一個頁面  
        } else {  
            console.log('登錄失敗');  
            // 在這里你可以顯示錯誤消息給用戶  
        }  
    })  
    .catch(error => {  
        console.error('登錄時發(fā)生錯誤:', error);  
        // 在這里你可以處理錯誤情況,比如顯示一個通用的錯誤消息給用戶  
    });  
});

以上就是Go gin框架加載Html模板文件的方法的詳細(xì)內(nèi)容,更多關(guān)于Go gin框架加載Html文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • golang-redis之sorted set類型操作詳解

    golang-redis之sorted set類型操作詳解

    這篇文章主要介紹了golang-redis之sorted set類型操作詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go?gRPC進(jìn)階教程服務(wù)超時設(shè)置

    Go?gRPC進(jìn)階教程服務(wù)超時設(shè)置

    這篇文章主要為大家介紹了Go?gRPC進(jìn)階,gRPC請求的超時時間設(shè)置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 詳解Go module的介紹及使用

    詳解Go module的介紹及使用

    module是一個相關(guān)Go包的集合,它是源代碼更替和版本控制的單元。這篇文章主要介紹了Go module的介紹及使用,需要的朋友可以參考下
    2020-10-10
  • 詳解如何在Go語言中生成隨機(jī)種子

    詳解如何在Go語言中生成隨機(jī)種子

    這篇文章主要為大家詳細(xì)介紹了如何在Go語言中生成隨機(jī)種子,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以參考一下
    2024-04-04
  • go讀取request.Body內(nèi)容踩坑實戰(zhàn)記錄

    go讀取request.Body內(nèi)容踩坑實戰(zhàn)記錄

    很多初學(xué)者在使用Go語言進(jìn)行Web開發(fā)時,都會遇到讀取 request.Body內(nèi)容的問題,這篇文章主要給大家介紹了關(guān)于go讀取request.Body內(nèi)容踩坑實戰(zhàn)記錄的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • golang中為什么不存在三元運(yùn)算符詳解

    golang中為什么不存在三元運(yùn)算符詳解

    這篇文章主要給大家介紹了關(guān)于golang中為什么不存在三元運(yùn)算符的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Go語言函數(shù)學(xué)習(xí)教程

    Go語言函數(shù)學(xué)習(xí)教程

    這篇文章主要介紹了Go語言函數(shù)基本用法,結(jié)合實例形式分析了Go語言函數(shù)的格式、定義、使用方法與相關(guān)注意事項,需要的朋友可以參考下
    2016-07-07
  • Go字符串切片操作str1[:index]的使用

    Go字符串切片操作str1[:index]的使用

    Go字符串切片str1[:index]從起始位置0到index-1截取,不復(fù)制數(shù)據(jù),利用字符串不可變性和共享內(nèi)存機(jī)制提升性能,具有一定的參考價值,感興趣的可以了解一下
    2025-06-06
  • gin?session中間件使用及源碼流程分析

    gin?session中間件使用及源碼流程分析

    這篇文章主要為大家介紹了gin?session中間件使用及源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Go語言指針用法詳解

    Go語言指針用法詳解

    Go指針和C指針在許多方面非常相似,但其中也有一些不同。本文詳細(xì)講解了Go語言指針的用法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評論

防城港市| 布拖县| 万州区| 项城市| 景洪市| 扶绥县| 望江县| 西乌珠穆沁旗| 武陟县| 晋宁县| 嘉禾县| 乡宁县| 宜兰市| 德江县| 沈丘县| 乌兰察布市| 长海县| 襄城县| 鄂托克旗| 民勤县| 桓台县| 报价| 城口县| 偏关县| 虹口区| 清水县| 南投市| 屏东县| 虎林市| 宜州市| 黄陵县| 昌江| 葫芦岛市| 犍为县| 冕宁县| 延吉市| 宿州市| 康保县| 大厂| 乐亭县| 河北区|