查看原文
其他

基于Gin框架的热加载方案,大大提高开发效率!

云原生Go 源自开发者
2024-08-28

在开发环境中,每当我们修改代码,都需要停止,然后重新启动服务来看效果,这无疑会增加我们的开发时间和复杂性。为解决这个问题,我将引入一个开发时很实用的特性——热加载,它可以使您在代码修改后实时看到修改情况,而无需重新启动应用程序。目前,Gin Web 开发框架提供了这个功能,以下是如何使用它的全面指南。

基于fresh的热加载

Fresh 是一个用于编写 web 应用程序的热加载工具,通过监控源文件变动实现。你可以通过如下步骤来使用它:

  1. 安装 fresh:
$ go get github.com/pilu/fresh
  1. 配置 runner.conf 文件:
root:              ./
tmp_path:          ./tmp
build_name:        runner-build
build_log:         runner-build-errors.log
valid_ext:         .go, .tpl, .tmpl, .html
no_rebuild_ext:    .tpl, .tmpl, .html
ignored:           assets, tmp
build_delay:       600
colors:            1
log_color_main:    cyan
log_color_build:   yellow
log_color_runner:  green
log_color_watcher: magenta
log_color_app:
  1. 在你的项目根目录下运行 fresh:
$ fresh

当您对项目中的任何 Go 文件进行更改并保存时,fresh 将自动重新编译并重新启动应用程序,只需要刷新页面就能看到更改。

使用air实现的热重载

对于使用 Go Modules 的项目,一个更为推荐的工具是 air。

  1. 全局安装 air:
$ go get -u github.com/cosmtrek/air
  1. 创建 .air.toml 配置文件:
# .air.toml
[build]
cmd = "go build -o ./tmp/main ."
bin = "tmp/main"
full_bin = "APP_ENV=dev ./tmp/main"
include_ext = ["go", "tpl", "tmpl", "html"]
exclude_dir = ["assets", "tmp", "vendor"]
delay = 1000

[log]
level = "debug"
  1. 在项目根目录下运行 air:
$ air

您可以查询 air 文档了解更多自定义配置选项。

结语

仔细配置并使用热加载可以大大提升我们的开发效率,无论选择 fresh 还是 air,都能根据自身需求对热加载行为进行深度定制。使用这些工具并配合 gin 框架可以实现灵活且易于维护的 web 应用开发。


文章精选

Go语言常见错误| 意外的变量隐藏

Go语言常见错误| 不必要的代码嵌套

Go语言常见错误| 误用init函数

Go语言常见错误| 滥用getters/setters

Go语言常见错误 | 接口污染

Go语言常见错误| 将接口定义在实现方一侧


点击关注并扫码添加进交流群领取「Go 语言」学习资料

继续滑动看下一个
源自开发者
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存