如果您是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