前言

最近在做一个go + vue的项目,快做完的时候告诉我要把vue和go一起打包,这个问题一下子就难道我了啊,以前都是把vue放到nginx中去跑,打包到go还没玩过,毕竟我也是个go的菜鸟。好吧,开搞,查资料……测试……无线循环,终于搞好了打包的问题,结果页面无法进行刷新,点击浏览器的刷新按钮页面直接404。无奈,继续找资料,但是这方面的资料太少了,只找到的在tomcat中怎么解决这个问题,go里面几乎没有。咋办呢,自己搞呗,功夫不负瞎鸡巴搞,瞎猫碰到死耗子居然搞成功了,而且方法出乎意料,哈哈哈!!!

正文

1. 打包

1.1 先将vue项目打包

npm run build

1.2 准备打包工具

go get -u github.com/jteeuwen/go-bindata/...go get -u github.com/elazarl/go-bindata-assetfs/...

1.3 将 dist 文件夹 拷贝到 go项目中

在 go 项目中新建文件夹 vue 用来放置 vue 打包后的的静态资源 将 dist 文件夹拷贝至该目录下

. |-program  (项目根目录)   |-main.go   (入口)   |-vue   (vue 静态资源)       |-dist           |-js           |-css           |-font           |-index.html |- ...

1.4 打包静态资源

go-bindata-assetfs -o=vue/vue.go -pkg=vue vue/dist/...
-o=vue/vue.go-pkg=vue

1.5 配置路由和静态资源

直接抄代码:

上面代码写的有点冗余大家可以自行优化哈。

接下来就是 go 的打包了,这就不多说的哈,常规操作嘛。

大功告成

是不是有人这会问还没解决刷新 404 的问题呢,其实上面代码中已经写过了。那我就再重复一遍喽。

2 解决浏览器刷新404的问题。

在上面代码中:

这里写的内容就是用来解决刷新404的。

index.htmlr.NoRouteindex.html

结束

这两天被这个东西给整惨了,关于go打包和刷新404这方面的问题的决绝方法确实很难找到。要不是环境的特殊要求谁愿意这么搞,直接上nginx多香,但是没办法啊,遇到问题还得解决。希望可以帮到跟我遇到同样问题的童鞋,哈哈~~