使用Go語言快速構(gòu)建靜態(tài)資源服務(wù)
在 Web 開發(fā)中,除了提供 API 接口外,往往還需要對外提供靜態(tài)資源服務(wù),比如:
- CSS 樣式文件
- JavaScript 腳本
- 圖片、字體等靜態(tài)資源
Go 的 net/http 包和 Gin 框架都提供了方便的方式來托管這些靜態(tài)文件。
本篇我們將用 Gin 框架 演示如何快速構(gòu)建一個靜態(tài)資源服務(wù)。
一、功能目標
使用 Gin 提供一個靜態(tài)資源目錄,讓用戶能直接訪問 CSS、JS、圖片。
演示 HTML 頁面引入這些靜態(tài)資源。
支持前端直接訪問 /static/... 路徑獲取文件。
二、項目結(jié)構(gòu)
假設(shè)我們的項目目錄結(jié)構(gòu)如下:
project/
│── main.go
│── static/
│ ├── css/
│ │ └── style.css
│ ├── js/
│ │ └── app.js
│ └── images/
│ └── logo.png
└── templates/
└── index.html
三、代碼實現(xiàn)
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
// 1. 加載模板
r.LoadHTMLGlob("templates/*")
// 2. 提供靜態(tài)文件服務(wù)
// /static 對應(yīng)項目下的 static 目錄
r.Static("/static", "./static")
// 3. 首頁路由
r.GET("/", func(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", nil)
})
// 啟動服務(wù)器
r.Run(":8080")
}
四、HTML 模板示例
templates/index.html:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>靜態(tài)資源示例</title>
<!-- 引入 CSS -->
<link rel="stylesheet" href="/static/css/style.css" rel="external nofollow" >
</head>
<body>
<h1>歡迎來到 Go 靜態(tài)資源服務(wù)示例</h1>
<!-- 引入圖片 -->
<img src="/static/images/logo.png" alt="Logo" width="150">
<!-- 引入 JS -->
<script src="/static/js/app.js"></script>
</body>
</html>
五、靜態(tài)資源示例
static/css/style.css:
body {
background-color: #f5f5f5;
font-family: Arial, sans-serif;
text-align: center;
}
h1 {
color: #333;
}
static/js/app.js:
document.addEventListener("DOMContentLoaded", function() {
console.log("JavaScript 已加載");
});
六、運行與訪問
運行服務(wù):
go run main.go
在瀏覽器訪問:http://localhost:8080/
你會看到頁面正常加載了 CSS 樣式、圖片和 JavaScript 腳本。
靜態(tài)資源也可以直接訪問:
http://localhost:8080/static/images/logo.png http://localhost:8080/static/css/style.css
七、總結(jié)
- Gin 提供
Static()方法一行就能完成靜態(tài)文件托管。 - 靜態(tài)文件路徑映射和 URL 前綴可以靈活配置。
- 結(jié)合 HTML 模板,可以很方便地構(gòu)建完整的前端頁面服務(wù)。
到此這篇關(guān)于使用Go語言快速構(gòu)建靜態(tài)資源服務(wù)的文章就介紹到這了,更多相關(guān)Go靜態(tài)資源服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang中http請求的context傳遞到異步任務(wù)的坑及解決
這篇文章主要介紹了golang中http請求的context傳遞到異步任務(wù)的坑及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
基于golang channel實現(xiàn)的輕量級異步任務(wù)分發(fā)器示例代碼
這篇文章主要給大家介紹了關(guān)于基于golang channel實現(xiàn)的輕量級異步任務(wù)分發(fā)器的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07

