go语言部署问题

java部署可以生成war,war其实是可以用解压文件看到文件内容的;
php部署后更是可以直接看到源码;
nodejs部署后也可以看到源码

唯独go语言不同,例如我们使用gin这个web框架,go build后就能生成一个可执行文件,这样问题就来了,我们如果想在线热更新一个css文件,那就得重新go build。我用的是mac,可执行文件肯定不能直接上传linux,得在linux环境有一套源码,从而go build后生成linux可运行的文件。我想目前流行前后端分离,go语言只提供api就可以。mvc模式还是php的好

阅读 2.9k
3 个回答

讲一下我个人的一些见解,中间有错误请在评论区指出。

首先题主说的问题确实存在但是中间有一些前提条件没有理解。Java之所以可以生成war包是因为Java是需要编译成为class文件的,这个class文件并不可以直接运行,它需要JVM才能变成可以运行的。PHP和NodeJs同理。他们都需要一个解释中间文件的步骤。所以可能在单机部署时会有点便利(rpc推上去直接可以运行)

Go语言如果前后端不分离确实还是比较困难的,而且写api是目前主流的方式。

楼上也说了可以交叉编译,这是一种思路。但是个人建议题主可以熟悉一下Jenkins和K8S,以后部署的时候只需要点一下构建就可以直接运行整个流程。

新手上路,请多包涵

可以通过交叉编译在Mac中打包Linux的可执行文件

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

css一般不属于代码文件,特殊情况可以通过其他方法编译进去,但是绝大部分情况都是独立的。因为这些资源本身就是独立的,比如相比于接口api,css一般会加上cdn等等。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题