gin使用Air实时加载

Air能够实时监听项目的代码文件,在代码发生变更之后自动重新编译并执行,大大提高gin框架项目的开发效率。

1. 为什么需要实时加载?

之前使用Python编写Web项目的时候,常见的Flask或Django框架都是支持实时加载的,你修改了项目代码之后,程序能够自动重新加载并执行(live-reload),这在日常的开发阶段是十分方便的。

在使用Go语言的gin框架在本地做开发调试的时候,经常需要在变更代码之后频繁的按下Ctrl+C停止程序并重新编译再执行,这样就不是很方便。

2. Air介绍

怎样才能在基于gin框架开发时实现实时加载功能呢?像这种烦恼肯定不会只是你一个人的烦恼,所以我报着肯定有现成轮子的心态开始了全网大搜索。果不其然就在Github上找到了一个工具:Air[1]。它支持以下特性:

  • 彩色日志输出
  • 自定义构建或二进制命令
  • 支持忽略子目录
  • 启动后支持监听新目录
  • 更好的构建过程

3. 安装Air

Go

这也是最经典的安装方式:

    go get -u github.com/cosmtrek/air
MacOS
    curl -fLo air https://git.io/darwin_air
Linux
    curl -fLo air https://git.io/linux_air
Windows
    curl -fLo air.exe https://git.io/windows_air
Dcoker
docker run -it --rm \-w "<PROJECT>" \-e "air_wd=<PROJECT>" \-v $(pwd):<PROJECT> \-p <PORT>:<APP SERVER PORT> \cosmtrek/air-c <CONF>

然后按照下面的方式在docker中运行你的项目:

docker run -it --rm \-w "/go/src/github.com/cosmtrek/hub" \-v $(pwd):/go/src/github.com/cosmtrek/hub \-p 9090:9090 \cosmtrek/air

4. 使用Air

为了敲命令更简单更方便,你应该把alias air='~/.air'加到你的.bashrc.zshrc中。

首先进入你的项目目录:

    cd /path/to/your_project

最简单的用法就是直接执行下面的命令:

# 首先在当前目录下查找 `.air.conf`配置文件,如果找不到就使用默认的
air -c .air.conf

推荐的使用方法是:

# 1. 在当前目录创建一个新的配置文件.air.conf
touch .air.conf# 2. 复制 `air.conf.example` 中的内容到这个文件,然后根据你的需要去修改它# 3. 使用你的配置运行 air, 如果文件名是 `.air.conf`,只需要执行 `air`。
air
air_example.conf示例

完整的air_example.conf示例配置如下,可以根据自己的需要修改。

# [Air](https://github.com/cosmtrek/air) TOML 格式的配置文件# 工作目录
# 使用 . 或绝对路径,请注意 `tmp_dir` 目录必须在 `root` 目录下
root = "."
tmp_dir = "tmp"[build]
# 只需要写你平常编译使用的shell命令。你也可以使用 `make`
cmd = "go build -o ./tmp/main ."
# 由`cmd`命令得到的二进制文件名
bin = "tmp/main"
# 自定义的二进制,可以添加额外的编译标识例如添加 GIN_MODE=release
full_bin = "APP_ENV=dev APP_USER=air ./tmp/main"
# 监听以下文件扩展名的文件.
include_ext = ["go", "tpl", "tmpl", "html"]
# 忽略这些文件扩展名或目录
exclude_dir = ["assets", "tmp", "vendor", "frontend/node_modules"]
# 监听以下指定目录的文件
include_dir = []
# 排除以下文件
exclude_file = []
# 如果文件更改过于频繁,则没有必要在每次更改时都触发构建。可以设置触发构建的延迟时间
delay = 1000 # ms
# 发生构建错误时,停止运行旧的二进制文件。
stop_on_error = true
# air的日志文件名,该日志文件放置在你的`tmp_dir`中
log = "air_errors.log"[log]
# 显示日志时间
time = true[color]
# 自定义每个部分显示的颜色。如果找不到颜色,使用原始的应用程序日志。
main = "magenta"
watcher = "cyan"
build = "yellow"
runner = "green"[misc]
# 退出时删除tmp目录
clean_on_exit = true

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/636957.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

冷冻冷藏的技术介绍

风 幕 技 术 为食品展示提供储存条件的敞开式冷冻冷藏设备是如何实现保温的? “风幕”——看不见的隔热屏障 空气动力优化的多级挤压试风幕&#xff0c;有效阻止外部湿热空气的进入&#xff1b;同时将蒸发器上的冷量带到柜内&#xff0c;带走柜内食品的热量&#xff0c;从而达…

2024 前端高频面试题之 Vue 篇

Vue 篇&#xff08;持续更新中&#xff09; 1、v-for 和 v-if 可以混合使用吗&#xff1f;为什么&#xff1f;2、v-for 中为什么加 key&#xff1f;3、事件默认有个 event 参数&#xff0c;它是什么&#xff1f;怎么使用&#xff1f;事件被绑定到哪里&#xff1f;4、vue 父子组…

网络卡问题排查手段

问题 对后端来说&#xff0c;网络卡了问题&#xff0c;本身很难去排查&#xff0c;因为是 App 通过互联网连接服务 总结下&#xff0c;以往经验&#xff0c;网络卡&#xff0c;通常会有以下情况造成&#xff1a; 某地区网络问题某地区某运营商问题后端服务超载前端网络模块 …

Pandas.Series.count() 非空单元格计数 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本&#xff1a; 本文基于 pandas2.1.2 编写。 关于本文内容更新&#xff1a; 随着pandas的stable版本更迭&#xff0c;本文持续更新&#xff0c;不断完善补充。 Pandas稳定版更新及变动内容整合专题&#xff1a; Pandas稳定版更新及变动迭持续更新。 Pandas API参…

R 语言学习 case3:柱状图(ggchart)

主要涉及到对图的优化&#xff0c;使用ggchart工具包 ggchart 链接&#xff1a;https://thomas-neitmann.github.io/ggcharts/index.html step1: 安装工具包 install.packages("ggcharts") install.packages("tidytext")step2: 导入工具包 library(dplyr…

springboot111在线教育系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的在线教育系统 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资…

数据结构之小结

前言 鉴于前几篇文章所讲的基础内容的重要性&#xff0c;这里再次总结一下几个易混淆的知识点。 各个类的特性 str类的符号为’ 和” ”&#xff0c;其是有序的&#xff0c;不可修改&#xff1b;list类的符号为&#xff3b;&#xff3d;&#xff0c;其是有序的&#xff0c;可…

彩色图像处理之伪彩色图像处理的python实现——数字图像处理

原理 伪彩色图像处理是一种多源信息融合的可视化方法。 处理对象:伪彩色图像处理的对象是多波段遥感图像,例如近红外带、红外带和可见光图像等。 原理:选择不同波段的原始图像作为新的三原色通道(如近红外为红色通道),按RGB模式合成伪彩色图像。 目的:利用不同波段信息融合,实…

51单片机原理及应用张毅刚版课后习题以及答案

AT89S51单片机内部集成了哪些外围功能部件 ①8位微处理器CPU ②数据存储器 128B RAM ③程序存储器 ④4个8位可编程并行I/O口 ⑤1个全双工的异步串行口 ⑥2个可编程的16位定时器/计数器 ⑦1个看门狗定时器WDT ⑧中断系统具有五个中断源 五个中断向量 ⑨特殊功能寄存器SFR 26个…

企业计算机服务器中了360后缀勒索病毒怎么办,360勒索病毒解密流程

计算机网络技术的不断应用&#xff0c;极大地提升了企业办公与生产效率&#xff0c;为企业提供了极大方便&#xff0c;但同时也为企业的数据安全埋下隐患&#xff0c;近期云天数据恢复中心再次接到企业的求助&#xff0c;企业的计算机服务器遭到了360后缀勒索病毒攻击&#xff…

Docker-解决Debian9阿里云源 apt update时需要公钥的问题

首先&#xff0c;最新的Debian9阿里云源如下&#xff08;底下这个源是正确的&#xff0c;在阿里云评论区里找到的&#xff0c;阿里云官网上面的是旧的&#xff0c;是不行的&#xff09;&#xff1a; deb http://mirrors.aliyun.com/debian-archive/debian stretch main contri…

k8s 使用cert-manager证书管理自签

个人建议使用安装更快&#xff0c;比helm快&#xff0c;还要等待安装crd kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.yaml#官网 https://cert-manager.io/docs/installation/kubectl/#创建自签的ClusterIssuer c…

centos7安装Redis7.2.4

文章目录 下载Redis解压Redis安装gcc依赖&#xff08;Redis是C语言编写的&#xff0c;编译需要&#xff09;编译安装src目录下二进制文件安装到/usr/local/bin修改redis.conf文件启动redis服务外部连接测试 参考&#xff1a; 在centos中安装redis-5.0.7 Memory overcommit must…

VUE3+elementPlus之 子组件直接修改父组件的值(父子组件props双向绑定)

直接上代码&#xff1a; 子组件&#xff1a; <el-tree node-click"handleNodeClick" />//组合式api const props defineProps({modelValue: {type: [Number],default: undefined,}, }); interface Tree {id: number;name: string;children?: Tree[]; } /** …

webpack 核心武器:loader 和 plugin 的使用指南(下)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

《Linux C编程实战》笔记:信号的捕捉和处理

Linux系统中对信号的处理主要由signal和sigaction函数来完成&#xff0c;另外还会介绍一个函数pause&#xff0c;它可以用来响应任何信号&#xff0c;不过不做任何处理 signal函数 #include <signal.h> void (*signal(int signum, void (*handler)(int)))(int);可以分解…

代码随想录算法训练营第十一天|● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复项 ● 150. 逆波兰表达式求值

仅做学习笔记&#xff0c;详细请访问代码随想录 栈提供push 和 pop 等等接口&#xff0c;所有元素必须符合先进后出规则&#xff0c;所以栈不提供走访功能&#xff0c;也不提供迭代器(iterator)。 不像是set 或者map 提供迭代器iterator来遍历所有元素 栈是以底层容器完成其所…

VMware workstation安装FreeBSD14.0虚拟机并配置网络

VMware workstation安装FreeBSD14.0虚拟机并配置网络 FreeBSD是类UNIX操作系统&#xff0c;FreeBSD带有多个软件包&#xff0c;并覆盖了广阔的应用领域&#xff0c;且都是免费和易于安装的。该文档适用于在VMware workstation平台安装FreeBSD14.0虚拟机。 1.安装准备 1.1安装…

蓝桥杯-dfs(一)

&#x1f4d1;前言 本文主要是【算法】——dfs使用的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&#xff1…

怎么提升搜狗网站排名

在当今数字化时代&#xff0c;网站排名对于品牌、企业以及个人都至关重要。而对于许多网站来说&#xff0c;搜狗搜索引擎是一个重要的流量来源。为了在搜狗上取得更好的排名&#xff0c;不仅需要优化网站内容&#xff0c;还需要巧妙运用一些工具和技巧。在本文中&#xff0c;我…