[{"data":1,"prerenderedAt":806},["ShallowReactive",2],{"content:\u002F2025\u002F07\u002Fgo-air":3,"surround:\u002F2025\u002F07\u002Fgo-air":801},{"id":4,"title":5,"body":6,"categories":777,"date":779,"description":780,"draft":781,"extension":782,"image":783,"meta":784,"navigation":203,"path":786,"permalink":783,"published":783,"readingTime":787,"recommend":783,"references":783,"seo":792,"sitemap":793,"stem":794,"tags":795,"type":798,"updated":799,"__hash__":800},"content\u002Fposts\u002F2025\u002F07\u002Fgo-air.md","Go Air 热重载工具使用指南",{"type":7,"value":8,"toc":765},"minimark",[9,32,36,51,76,79,83,95,101,104,108,128,131,165,168,728,731,743,761],[10,11,12,13,17,18,21,22,25,26,28,29,31],"p",{},"用",[14,15,16],"code",{"code":16},"fresh","用腻了，想使用",[14,19,20],{"code":20},"air","尝尝鲜，上",[14,23,24],{"code":24},"Github","一看，",[14,27,20],{"code":20},"的知名度比",[14,30,16],{"code":16},"高很多，于是直接开始吧。",[33,34,35],"h2",{"id":35},"直接安装",[37,38,39],"blockquote",{},[10,40,41],{},[42,43,44,45],"strong",{},"项目地址：",[46,47,48],"a",{"href":48,"rel":49},"https:\u002F\u002Fgithub.com\u002Fair-verse\u002Fair",[50],"nofollow",[52,53,58],"pre",{"className":54,"code":55,"language":56,"meta":57,"style":57},"language-bash shiki shiki-themes github-light github-dark","go install github.com\u002Fair-verse\u002Fair@latest\n","bash","",[14,59,60],{"__ignoreMap":57},[61,62,65,69,73],"span",{"class":63,"data-line":64,"line":64},"line",1,[61,66,68],{"class":67},"sScJk","go",[61,70,72],{"class":71},"sZZnC"," install",[61,74,75],{"class":71}," github.com\u002Fair-verse\u002Fair@latest\n",[33,77,78],{"id":78},"开始使用",[80,81,82],"h3",{"id":82},"初始化",[52,84,86],{"className":54,"code":85,"language":56,"meta":57,"style":57},"air init\n",[14,87,88],{"__ignoreMap":57},[61,89,90,92],{"class":63,"data-line":64,"line":64},[61,91,20],{"class":67},[61,93,94],{"class":71}," init\n",[10,96,97,98],{},"然后项目根目录就会多出一个",[14,99,100],{"code":100},".air.toml",[80,102,103],{"id":103},"修改配置文件",[105,106,107],"h4",{"id":107},"编译位置",[52,109,113],{"className":110,"code":111,"language":112,"meta":57,"style":57},"language-toml shiki shiki-themes github-light github-dark","cmd = \"go build -o .\u002Ftmp\u002Fmain.exe .\u002Fcmd\u002F.\" # 根据main.go所在位置修改，如果为根目录设置为'.',当前main.go位于cmd文件夹中\n","toml",[14,114,115],{"__ignoreMap":57},[61,116,117,121,124],{"class":63,"data-line":64,"line":64},[61,118,120],{"class":119},"sVt8B","cmd = ",[61,122,123],{"class":71},"\"go build -o .\u002Ftmp\u002Fmain.exe .\u002Fcmd\u002F.\"",[61,125,127],{"class":126},"sJ8bj"," # 根据main.go所在位置修改，如果为根目录设置为'.',当前main.go位于cmd文件夹中\n",[105,129,130],{"id":130},"退出air删除exe",[52,132,134],{"className":110,"code":133,"language":112,"meta":57,"style":57},"[misc]\n  clean_on_exit = true # 在退出air的时候删除编译的exe\n",[14,135,136,148],{"__ignoreMap":57},[61,137,138,142,145],{"class":63,"data-line":64,"line":64},[61,139,141],{"class":140},"sSDpw","[",[61,143,144],{"class":67},"misc",[61,146,147],{"class":140},"]\n",[61,149,151,155,158,162],{"class":63,"data-line":150,"line":150},2,[61,152,154],{"class":153},"indent","  ",[61,156,157],{"class":119},"clean_on_exit = ",[61,159,161],{"class":160},"sj4cs","true",[61,163,164],{"class":126}," # 在退出air的时候删除编译的exe\n",[105,166,167],{"id":167},"完整配置文件",[52,169,171],{"className":110,"code":170,"language":112,"meta":57,"style":57},"root = \".\"\ntestdata_dir = \"testdata\"\ntmp_dir = \"tmp\"\n\n[build]\n  args_bin = []\n  bin = \"tmp\\\\main.exe\"\n  cmd = \"go build -o .\u002Ftmp\u002Fmain.exe .\u002Fcmd\u002F.\" # 根据main.go所在位置修改，如果为根目录设置为'.',当前main.go位于cmd文件夹中\n  delay = 1000\n  exclude_dir = [\"assets\", \"tmp\", \"vendor\", \"testdata\"]\n  exclude_file = []\n  exclude_regex = [\"_test.go\"]\n  exclude_unchanged = false\n  follow_symlink = false\n  full_bin = \"\"\n  include_dir = []\n  include_ext = [\"go\", \"tpl\", \"tmpl\", \"html\"]\n  include_file = []\n  kill_delay = \"0s\"\n  log = \"build-errors.log\"\n  poll = false\n  poll_interval = 0\n  post_cmd = []\n  pre_cmd = []\n  rerun = false\n  rerun_delay = 500\n  send_interrupt = false\n  stop_on_error = false\n\n[color]\n  app = \"\"\n  build = \"yellow\"\n  main = \"magenta\"\n  runner = \"green\"\n  watcher = \"cyan\"\n\n[log]\n  main_only = false\n  time = false\n\n[misc]\n  clean_on_exit = true # 在退出air的时候删除编译的exe\n\n[proxy]\n  app_port = 0\n  enabled = false\n  proxy_port = 0\n\n[screen]\n  clear_on_rebuild = false\n  keep_scroll = true\n",[14,172,173,181,189,198,205,215,227,244,255,266,297,309,324,335,345,356,368,398,410,421,432,442,453,465,477,487,498,508,518,523,533,543,554,565,576,587,592,602,612,622,627,636,647,652,662,672,682,692,697,707,717],{"__ignoreMap":57},[61,174,175,178],{"class":63,"data-line":64,"line":64},[61,176,177],{"class":119},"root = ",[61,179,180],{"class":71},"\".\"\n",[61,182,183,186],{"class":63,"data-line":150,"line":150},[61,184,185],{"class":119},"testdata_dir = ",[61,187,188],{"class":71},"\"testdata\"\n",[61,190,192,195],{"class":63,"data-line":191,"line":191},3,[61,193,194],{"class":119},"tmp_dir = ",[61,196,197],{"class":71},"\"tmp\"\n",[61,199,201],{"class":63,"data-line":200,"line":200},4,[61,202,204],{"emptyLinePlaceholder":203},true,"\n",[61,206,208,210,213],{"class":63,"data-line":207,"line":207},5,[61,209,141],{"class":140},[61,211,212],{"class":67},"build",[61,214,147],{"class":140},[61,216,218,220,223,225],{"class":63,"data-line":217,"line":217},6,[61,219,154],{"class":153},[61,221,222],{"class":119},"args_bin = ",[61,224,141],{"class":140},[61,226,147],{"class":140},[61,228,230,232,235,238,241],{"class":63,"data-line":229,"line":229},7,[61,231,154],{"class":153},[61,233,234],{"class":119},"bin = ",[61,236,237],{"class":71},"\"tmp",[61,239,240],{"class":160},"\\\\",[61,242,243],{"class":71},"main.exe\"\n",[61,245,247,249,251,253],{"class":63,"data-line":246,"line":246},8,[61,248,154],{"class":153},[61,250,120],{"class":119},[61,252,123],{"class":71},[61,254,127],{"class":126},[61,256,258,260,263],{"class":63,"data-line":257,"line":257},9,[61,259,154],{"class":153},[61,261,262],{"class":119},"delay = ",[61,264,265],{"class":160},"1000\n",[61,267,269,271,274,276,279,282,285,287,290,292,295],{"class":63,"data-line":268,"line":268},10,[61,270,154],{"class":153},[61,272,273],{"class":119},"exclude_dir = ",[61,275,141],{"class":140},[61,277,278],{"class":71},"\"assets\"",[61,280,281],{"class":119},", ",[61,283,284],{"class":71},"\"tmp\"",[61,286,281],{"class":119},[61,288,289],{"class":71},"\"vendor\"",[61,291,281],{"class":119},[61,293,294],{"class":71},"\"testdata\"",[61,296,147],{"class":140},[61,298,300,302,305,307],{"class":63,"data-line":299,"line":299},11,[61,301,154],{"class":153},[61,303,304],{"class":119},"exclude_file = ",[61,306,141],{"class":140},[61,308,147],{"class":140},[61,310,312,314,317,319,322],{"class":63,"data-line":311,"line":311},12,[61,313,154],{"class":153},[61,315,316],{"class":119},"exclude_regex = ",[61,318,141],{"class":140},[61,320,321],{"class":71},"\"_test.go\"",[61,323,147],{"class":140},[61,325,327,329,332],{"class":63,"data-line":326,"line":326},13,[61,328,154],{"class":153},[61,330,331],{"class":119},"exclude_unchanged = ",[61,333,334],{"class":160},"false\n",[61,336,338,340,343],{"class":63,"data-line":337,"line":337},14,[61,339,154],{"class":153},[61,341,342],{"class":119},"follow_symlink = ",[61,344,334],{"class":160},[61,346,348,350,353],{"class":63,"data-line":347,"line":347},15,[61,349,154],{"class":153},[61,351,352],{"class":119},"full_bin = ",[61,354,355],{"class":71},"\"\"\n",[61,357,359,361,364,366],{"class":63,"data-line":358,"line":358},16,[61,360,154],{"class":153},[61,362,363],{"class":119},"include_dir = ",[61,365,141],{"class":140},[61,367,147],{"class":140},[61,369,371,373,376,378,381,383,386,388,391,393,396],{"class":63,"data-line":370,"line":370},17,[61,372,154],{"class":153},[61,374,375],{"class":119},"include_ext = ",[61,377,141],{"class":140},[61,379,380],{"class":71},"\"go\"",[61,382,281],{"class":119},[61,384,385],{"class":71},"\"tpl\"",[61,387,281],{"class":119},[61,389,390],{"class":71},"\"tmpl\"",[61,392,281],{"class":119},[61,394,395],{"class":71},"\"html\"",[61,397,147],{"class":140},[61,399,401,403,406,408],{"class":63,"data-line":400,"line":400},18,[61,402,154],{"class":153},[61,404,405],{"class":119},"include_file = ",[61,407,141],{"class":140},[61,409,147],{"class":140},[61,411,413,415,418],{"class":63,"data-line":412,"line":412},19,[61,414,154],{"class":153},[61,416,417],{"class":119},"kill_delay = ",[61,419,420],{"class":71},"\"0s\"\n",[61,422,424,426,429],{"class":63,"data-line":423,"line":423},20,[61,425,154],{"class":153},[61,427,428],{"class":119},"log = ",[61,430,431],{"class":71},"\"build-errors.log\"\n",[61,433,435,437,440],{"class":63,"data-line":434,"line":434},21,[61,436,154],{"class":153},[61,438,439],{"class":119},"poll = ",[61,441,334],{"class":160},[61,443,445,447,450],{"class":63,"data-line":444,"line":444},22,[61,446,154],{"class":153},[61,448,449],{"class":119},"poll_interval = ",[61,451,452],{"class":160},"0\n",[61,454,456,458,461,463],{"class":63,"data-line":455,"line":455},23,[61,457,154],{"class":153},[61,459,460],{"class":119},"post_cmd = ",[61,462,141],{"class":140},[61,464,147],{"class":140},[61,466,468,470,473,475],{"class":63,"data-line":467,"line":467},24,[61,469,154],{"class":153},[61,471,472],{"class":119},"pre_cmd = ",[61,474,141],{"class":140},[61,476,147],{"class":140},[61,478,480,482,485],{"class":63,"data-line":479,"line":479},25,[61,481,154],{"class":153},[61,483,484],{"class":119},"rerun = ",[61,486,334],{"class":160},[61,488,490,492,495],{"class":63,"data-line":489,"line":489},26,[61,491,154],{"class":153},[61,493,494],{"class":119},"rerun_delay = ",[61,496,497],{"class":160},"500\n",[61,499,501,503,506],{"class":63,"data-line":500,"line":500},27,[61,502,154],{"class":153},[61,504,505],{"class":119},"send_interrupt = ",[61,507,334],{"class":160},[61,509,511,513,516],{"class":63,"data-line":510,"line":510},28,[61,512,154],{"class":153},[61,514,515],{"class":119},"stop_on_error = ",[61,517,334],{"class":160},[61,519,521],{"class":63,"data-line":520,"line":520},29,[61,522,204],{"emptyLinePlaceholder":203},[61,524,526,528,531],{"class":63,"data-line":525,"line":525},30,[61,527,141],{"class":140},[61,529,530],{"class":67},"color",[61,532,147],{"class":140},[61,534,536,538,541],{"class":63,"data-line":535,"line":535},31,[61,537,154],{"class":153},[61,539,540],{"class":119},"app = ",[61,542,355],{"class":71},[61,544,546,548,551],{"class":63,"data-line":545,"line":545},32,[61,547,154],{"class":153},[61,549,550],{"class":119},"build = ",[61,552,553],{"class":71},"\"yellow\"\n",[61,555,557,559,562],{"class":63,"data-line":556,"line":556},33,[61,558,154],{"class":153},[61,560,561],{"class":119},"main = ",[61,563,564],{"class":71},"\"magenta\"\n",[61,566,568,570,573],{"class":63,"data-line":567,"line":567},34,[61,569,154],{"class":153},[61,571,572],{"class":119},"runner = ",[61,574,575],{"class":71},"\"green\"\n",[61,577,579,581,584],{"class":63,"data-line":578,"line":578},35,[61,580,154],{"class":153},[61,582,583],{"class":119},"watcher = ",[61,585,586],{"class":71},"\"cyan\"\n",[61,588,590],{"class":63,"data-line":589,"line":589},36,[61,591,204],{"emptyLinePlaceholder":203},[61,593,595,597,600],{"class":63,"data-line":594,"line":594},37,[61,596,141],{"class":140},[61,598,599],{"class":67},"log",[61,601,147],{"class":140},[61,603,605,607,610],{"class":63,"data-line":604,"line":604},38,[61,606,154],{"class":153},[61,608,609],{"class":119},"main_only = ",[61,611,334],{"class":160},[61,613,615,617,620],{"class":63,"data-line":614,"line":614},39,[61,616,154],{"class":153},[61,618,619],{"class":119},"time = ",[61,621,334],{"class":160},[61,623,625],{"class":63,"data-line":624,"line":624},40,[61,626,204],{"emptyLinePlaceholder":203},[61,628,630,632,634],{"class":63,"data-line":629,"line":629},41,[61,631,141],{"class":140},[61,633,144],{"class":67},[61,635,147],{"class":140},[61,637,639,641,643,645],{"class":63,"data-line":638,"line":638},42,[61,640,154],{"class":153},[61,642,157],{"class":119},[61,644,161],{"class":160},[61,646,164],{"class":126},[61,648,650],{"class":63,"data-line":649,"line":649},43,[61,651,204],{"emptyLinePlaceholder":203},[61,653,655,657,660],{"class":63,"data-line":654,"line":654},44,[61,656,141],{"class":140},[61,658,659],{"class":67},"proxy",[61,661,147],{"class":140},[61,663,665,667,670],{"class":63,"data-line":664,"line":664},45,[61,666,154],{"class":153},[61,668,669],{"class":119},"app_port = ",[61,671,452],{"class":160},[61,673,675,677,680],{"class":63,"data-line":674,"line":674},46,[61,676,154],{"class":153},[61,678,679],{"class":119},"enabled = ",[61,681,334],{"class":160},[61,683,685,687,690],{"class":63,"data-line":684,"line":684},47,[61,686,154],{"class":153},[61,688,689],{"class":119},"proxy_port = ",[61,691,452],{"class":160},[61,693,695],{"class":63,"data-line":694,"line":694},48,[61,696,204],{"emptyLinePlaceholder":203},[61,698,700,702,705],{"class":63,"data-line":699,"line":699},49,[61,701,141],{"class":140},[61,703,704],{"class":67},"screen",[61,706,147],{"class":140},[61,708,710,712,715],{"class":63,"data-line":709,"line":709},50,[61,711,154],{"class":153},[61,713,714],{"class":119},"clear_on_rebuild = ",[61,716,334],{"class":160},[61,718,720,722,725],{"class":63,"data-line":719,"line":719},51,[61,721,154],{"class":153},[61,723,724],{"class":119},"keep_scroll = ",[61,726,727],{"class":160},"true\n",[80,729,730],{"id":730},"运行",[52,732,734],{"className":54,"code":733,"language":56,"meta":57,"style":57},"air # 默认直接读取.air.toml的配置\n",[14,735,736],{"__ignoreMap":57},[61,737,738,740],{"class":63,"data-line":64,"line":64},[61,739,20],{"class":67},[61,741,742],{"class":126}," # 默认直接读取.air.toml的配置\n",[52,744,746],{"className":54,"code":745,"language":56,"meta":57,"style":57},"air -c config.toml # 指定配置文件\n",[14,747,748],{"__ignoreMap":57},[61,749,750,752,755,758],{"class":63,"data-line":64,"line":64},[61,751,20],{"class":67},[61,753,754],{"class":160}," -c",[61,756,757],{"class":71}," config.toml",[61,759,760],{"class":126}," # 指定配置文件\n",[762,763,764],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sSDpw, html code.shiki .sSDpw{--shiki-default:#005cc5;--shiki-dark:#79b8ff}",{"title":57,"searchDepth":200,"depth":200,"links":766},[767,768],{"id":35,"depth":150,"text":35},{"id":78,"depth":150,"text":78,"children":769},[770,771,776],{"id":82,"depth":191,"text":82},{"id":103,"depth":191,"text":103,"children":772},[773,774,775],{"id":107,"depth":200,"text":107},{"id":130,"depth":200,"text":130},{"id":167,"depth":200,"text":167},{"id":730,"depth":191,"text":730},[778],"Go语言","2025-07-26","介绍 Go Air 热重载工具的安装、初始化和配置方法，提升本地开发与调试效率。",false,"md",null,{"slots":785},{},"\u002F2025\u002F07\u002Fgo-air",{"text":788,"minutes":789,"time":790,"words":791},"2 min read",1.68,100800,336,{"title":5,"description":780},{"loc":786},"posts\u002F2025\u002F07\u002Fgo-air",[796,797],"Go","开发工具","tech","2025-07-28","NnRfHDizgoVa_ONqbk2XcPvjVq9QXmQB_1LtwXW9GI0",[783,802],{"title":803,"path":804,"stem":805,"date":779,"type":798,"children":-1},"Go Cache 单机缓存使用与原理","\u002F2025\u002F07\u002Fgo-cache","posts\u002F2025\u002F07\u002Fgo-cache",1786555056703]