fiber项目热重载优化需四步:禁用gosumdb校验、清理air防抖延迟、用just+watchexec精准监听.go文件、开启fiber启动日志并拆分路由注册。

在 Fiber 项目中手动改代码→保存→切终端→Ctrl+C→go run ./cmd/app 重复执行,严重拖慢接口调试节奏。热重载不是加个第三方工具就能开箱即用,必须绕开 Go 构建链里的真实卡点。
先禁用干扰构建的默认行为
打开 go.mod 所在目录,执行:go env -w GOSUMDB=off。国内直连 sum.golang.org 常因 TLS 握手超时卡住 5–10 秒,关掉校验后首次构建快 3 秒以上。
检查项目根目录是否存在 air.toml 或 .air.conf,若存在且内容含 build_delay = 0 或 delay = 0,立即删掉——air 默认延迟 1 秒防抖,但你改完 handler 立刻要看到结果,这个 delay 是多余负担。
确认所有 //go:generate 注释只出现在真正需要生成代码的文件里(比如 proto 目录下),【不要在 main.go 或 handler 包里写 go:generate】,否则改一行路由就触发全量 protobuf 重生成。
用 just 替代 air 实现精准监听
安装 just:go install github.com/casey/just@latest。
在项目根目录新建 justfile,写入:
dev:
just build && just run
build:
go generate ./api/... # 只对 api 目录下 proto 生效
go build -o bin/app ./cmd/app
run:
./bin/app
执行 just watch --on-change "just dev" 启动监听。它只在 .go 文件变更时触发 build → run,不碰 .proto/.yaml/.html,避免无谓等待。
注意:just watch 不是内置命令,需额外安装 watchexec 工具(brew install watchexec 或 choco install watchexec),否则报错。
让 Fiber 启动日志可见
修改 main.go 中 app 初始化部分:
app := fiber.New(fiber.Config{
DisableStartupMessage: false, // 关键:默认为 true,启动静默
})
Fiber 默认关闭启动日志,你改完代码重启却看不到监听端口、路由表,误以为没生效。设为 false 后终端会立刻输出 ⇨ http server started on [::]:3000 和已注册路由列表。
这一步不做,后续所有热重载操作都像在黑盒里调试。
处理中间件和路由变更的响应延迟
方法一:拆分路由注册逻辑
把所有 app.Get/app.Post 调用从 main.go 移到 router/router.go,该文件只做一件事:返回 *fiber.App。main.go 里仅保留 app := fiber.New(); router.Setup(app)。这样改路由不会导致 main.go 重编译整个依赖图。
方法二:禁用 StrictRouting 临时提速(仅开发)
在 fiber.New 参数中加入 StrictRouting: false,避免每次增删一个 /users/ 这类带斜杠路由时,因匹配冲突反复重启验证路径是否 404。上线前必须删掉这一行。
方法三:用 embed 加载模板时限定路径
如果用了 embed 加载 HTML 模板,别写 //go:embed templates/**.html,改成 //go:embed templates/*.html。前者会让 go build 递归扫描所有子目录,哪怕你只改了一个 JS 文件,构建也会多耗 800ms。











