golang web开发前的准备

NY_YN · · 922 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

golang web开发过程中想要拥有比较好的体验,需要解决两个问题,一个是自动reload(检测文件改动自动reload),二自动同步代码。

自动reload

这个是硬需求,因为开发过程中肯定需要不断的调试以及改动代码,需要及时能够看到代码的运行效果。如果没有自动reload,则需要我们不断的ctrl+c && go run main.go 操作。操作频繁而且浪费时间,最主要的是影响心情。

目前发现了一个golang的工具,可以实现自动reload功能——gin。这个gin不是我们熟知的web框架的gin,是一个自动reload的工具。使用方法也很简单,就是原本使用 go run main.go命令改成gin run main.go

gin -h
   --laddr value, -l value       listening address for the proxy server
   --port value, -p value        port for the proxy server (default: 3000)
   --appPort value, -a value     port for the Go web server (default: 3001)
   --bin value, -b value         name of generated binary file (default: "gin-bin")
   --path value, -t value        Path to watch files from (default: ".")
   --build value, -d value       Path to build files from (defaults to same value as --path)
   --excludeDir value, -x value  Relative directories to exclude
   --immediate, -i               run the server immediately after it's built
   --all                         reloads whenever any file changes, as opposed to reloading only on .go file change
   --godep, -g                   use godep when building
   --buildArgs value             Additional go build arguments
   --certFile value              TLS Certificate
   --keyFile value               TLS Certificate Key
   --logPrefix value             Setup custom log prefix
   --notifications               enable desktop notifications
   --help, -h                    show help
   --version, -v                 print the version

举个栗子

比如golang web的端口号为8089,使用自动reload的命令为:
gin --port 8000 --appPort 8089 run main.go
运行gin命令主要有两个参数需要注意,appPort是web服务的端口号,port参数gin工具代理后的参数。也就是gin运行的时候需要代理一个端口号。

代码自动同步

个人开发不会遇到这个问题,但是公司开发代码可能在本地无法运行调试,代码需要运行在远程开发机上。比如mysql ip的限制,代码调试需要在公司的开发机上面调试。但是代码编辑一般都是在本地开发,而代码运行需要在远程的开发机上面运行。这个地方就涉及到代码如何自动同步的问题,一般有几种解决方案:

  • FTP/SFTP + vscode + sync插件
  • FTP/SFTP + jetbrains GoLand + sync插件
  • fis3 + receiver (推荐)

比较推荐fis3这种方案,原因有两点:

  • 服务部署简单
  • 同步文件路径可以随意更改
  • 端口号可以随意设置(有些开发机限制了ftp端口号)

当然fis3的功能不仅限于此,详细功能可以参考官网文档

fis3 的方案,本地和远程都需要部署nodejs环境,因为这个工具是js编写的。fis3是本地的同步工具,负责向远程同步文件,receiver则是远程的文件接收器。

举个栗子

部署
# 本地
$ npm i -g fis3
# 远程机器
$ git clone https://github.com/fex-team/receiver.git
$ cd receiver
$ npm install
$ node server.js # default port 8999, use `node server.js <port>` change port
同步代码

在项目根目录编写fis-conf.js文件,这个文件是fis3的配置文件,设置如何同步代码。详细设置请参考官方文档

/**
 * @file fis同步代码配置文件
 */

const rootPath = '/home/work/go/xxx';
const receiver = 'http://xxxx.xxx.xxx:8999/receiver';
const ignore = ['fis-conf.js', 'dev.sh', 'gin-bin'];

fis.set('project.ignore', fis.get('project.ignore').concat(ignore));

fis.match('*', {
    deploy: fis.plugin('http-push', {
        receiver,
        to: rootPath
    })
});

// 日志不同步
fis.match('/log/**', {
    release: false
});
fis.match('/tmp/**', {
    release: false
});

执行fis3命令同步代码

fis3 release -w

接下来就你就可以专心编写代码了,代码自动同步、服务自动reload,可以实现即时查看代码效果。golang web开发如飘柔一样丝滑。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:NY_YN

查看原文:golang web开发前的准备

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

922 次点击  
加入收藏 微博
上一篇:gRPC in Python
下一篇:08-GoLang运算符
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传