如果您是Web開發人員,並且尚未使用VSCODE中的Live Server擴展程序,您甚至是開發人員嗎?只是在開玩笑。但是,您是否考慮過在引擎蓋下的工作方式?在當今的博客中,讓我們嘗試了解使用Golang的動手實施的方式。為什麼Golang?好吧,這些天我正在探索Golang,還有什麼比構建項目更好的學習呢?因此,足夠的上下文(不是Golang中的一個)讓我們開始。
實時服務器的工作方式?
項目概述
在這個項目中,我的想法是相同的。我的目標是觀察文件更改(例如HTML,CSS和JavaScript),並在檢測到任何修改時觸發瀏覽器重新加載。為此,我使用了GO的內置HTTP服務器和FSNotify軟件包,它們有效地監視文件系統事件。
1。服務靜態文件
2。重新加載端點
http.Handle("/", http.FileServer(http.Dir("./static")))
此路由在頻道上聽取事件,後來將通過文件更改通知填充。
3.觀看文件更改
http.HandleFunc("/reload", func(w http.ResponseWriter, r *http.Request) {
4。過濾跟踪的文件
並非每個文件更改都應觸發重新加載,因此我添加了一個僅跟踪特定文件擴展名的過濾器:.html,.css和.js。這是使用filepath.ext函數來檢查文件類型的完成的:
func scanFileChanges() { watcher, err := fsnotify.NewWatcher() if err != nil { log.Fatal(err) } defer watcher.Close() for { select { case event := 5。運行服務器最後,我啟動了HTTP服務器以在端口8000上收聽,並同時啟動了文件觀看過程:
最後的想法
func isTrackedFile(fileName string) bool { ext := strings.ToLower(filepath.Ext(fileName)) return ext == ".html" || ext == ".css" || ext == ".js" }此示例著重於重新加載靜態文件時,還有很大的改進空間 - 例如,添加WebSocket支持對更平滑的通信,更好的文件處理以及擴展跟踪文件列表的支持。只有幾行GO代碼,我能夠改善靜態Web開發的工作流程,我期待進一步完善此工具。
查看代碼:Serve-It GitHub
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3