月前开始尝试用 Golang 写 Web 应用时,第一次意识到:对于一个像我这样过去总写 Java 代码的老程序员来说,因各类 IDE 带来的便利性,几乎忽略了热加载(Live Reload)这个问题的存在。…
几个月前开始尝试用 Golang 写 Web 应用时,第一次意识到:对于一个像我这样过去总写 Java 代码的老程序员来说,因各类 IDE 带来的便利性,几乎忽略了热加载(Live Reload)这个问题的存在。开始使用 Golang 之后,特别是是编写 Web 应用时,因为改写页面上一个 JavaScript 函数而需要暂停当前运行的程序,再重新运行程序实在太令人沮丧了。好在,Golang 开发相关的资料和方案都已经相当齐全,只需要找到合适的解决方案就可以愉快地编码。
任何一门编程语言,在开发过程中总是需要「编写代码」,之后「编译运行」这两个步骤。「编写代码」的过程,可以使用任何文本编辑器。「编译并运行」的过程需要编程语言提供的开发工具包来支持。而好的 IDE 可以将上述两个步骤紧密有效的链接起来,方便开发人员专注于实现业务本身。 Golang 开发过程中常见的 IDE 包括:免费的 Microsoft Visual Studio Code 以及商业收费的 JetBrains Goland。这篇文章讲解过程中,也将围绕着前述这两种 IDE 展开。 简单讲解一下关于「热加载」的概念。我们用中文书写的「热加载」相关的概念,源自于英文中的「Live Reload」以及 「Hot Reload」。而在英文中,这两者有着本质区别的:
Live Reload :当程序中的某一个或若干个文件发生变化时,重新加载或刷新��个程序。这个过程会导致程序状态丢失,比如:在界面上点击进入某个字界面等操作,会全部失效。最终的结果是,程序会重新启动并会是最初的样子。 Hot Reload :当程序中的某一个或若干个文件发生变化时,在不丢失程序运行状态的前提下更新修改的部分。比如:flutter 开发过程中就支持这种刷新方式。
通过 air -c .air.toml 命令启动应用程序,air 将会监听上述配置文件描述的内容,当有文件修改或删除、更新等操作时,会重新加载整个应用程序,从而实现 Live Reload 。 2JetBrains Goland 实践方案
如果使用的是 JetBrains Goland 作为 IDE 的话,就可以不必使用 air 来做 Live Reload。毕竟,air 是直接使用 go build -o 编译并运行,做 Debug 调试是不支持的。Goland 实践方案的思路:利用 Save Actions 插件监听保存操作,当保存操作被出发之后,执行 Goland 配置好的 Run 或者 Debug 选项启动应用。 2.1 配置应用的 Debug 或 Run 选项 找到程序入口 main 函数,开启 Debug 或者 Run 选项,根据弹出框配置好应用启动必要的参数,可参考: