vue 和 go 开发前后端分离的网站,现在想把 vue 打包生成的 dist 部署到 go 上,前后端使用同一个端口,可以做到吗?

2020-06-28 14:39:27 +08:00
 darknoll

前端还使用原来的路由,后端路由统一加个 /api 之类的,咋整?

5067 次点击
所在节点    程序员
29 条回复
fucker
2020-06-28 14:44:43 +08:00
1. 反向代理
2. 将 index.html 作为静态文件让 go 返回给前端,其他目录我记得 gin 有 r.StaticFS("/static", http.Dir("./static"))
hoosin
2020-06-28 14:58:08 +08:00
nginx 反向代理吧
deprecatedCoder
2020-06-28 15:07:21 +08:00
```

ginRootPath.Use(static.Serve("/", static.LocalFile(common.Cfg.Web.FrontDir, true)))
ginRootPath.StaticFile("situation", common.Cfg.Web.FrontDir+"/index.situation.html")
```
deprecatedCoder
2020-06-28 15:08:14 +08:00
import "github.com/gin-contrib/static"
api 的路由组前缀不要和 前端编译好的代码冲突就可以了
zhwithsweet
2020-06-28 15:09:45 +08:00
反带
darknoll
2020-06-28 15:45:29 +08:00
统一回复下,领导说不用反代,不装 nginx 之类的 web 服务器,直接运行一个 exe
HanMeiM
2020-06-28 15:50:29 +08:00
前端或者 api 单独一个 location 就好了
Fitz
2020-06-28 15:53:27 +08:00
http.Handle("/", http.FileServer( http.Dir("./static")))
wszbdyyy
2020-06-28 15:53:48 +08:00
nginx 反代
maoxs2
2020-06-28 15:56:52 +08:00
1. Vue 用 npm 生成 dist 文件夹
2. Go 里用 statik 打包成变量指向文件夹(类似的好几个)
3. 确认 server 里 static 等目录指向这个变量
4. go build .
5. 就一个文件,不用夹带文件夹了
Hanggi
2020-06-28 16:16:53 +08:00
之前正好用 Angular 做过这事:

首先 ng build 生成 dist 。
然后把生成的文件放到 public 里:r.Static("/public", "./public")

然后把里面的 index.html 移动到 views 里,并修改名称为 index.tmpl:r.LoadHTMLGlob("views/*")

然后写个 router:
c.HTML( http.StatusOK, "index.tmpl", gin.H{})

这是你想要的吧。
gamexg
2020-06-28 16:22:43 +08:00
可以,
做过类似的

使用 vfsgen 等类似的库内嵌 html 文件到 exe 即可。
scukmh
2020-06-28 16:23:13 +08:00
emmmm, 我做过这件事,但可执行文件比较大。大概就是楼上的思路,把前端生成的代码打包进二进制文件里。
xiayun
2020-06-28 17:21:48 +08:00
为啥要起一个端口···nginx 代理一下不就行了么
mlboy
2020-06-28 17:41:54 +08:00
可以,了解下 go 打包资源文件二进制
labulaka521
2020-06-28 17:56:09 +08:00
我们前段时间也遇到这个问题 可以参考一下我写的一篇文章 https://labulaka521.top/posts/4868566 不知道你用的 web 框架是啥 如果是 gin /目录就不能使用了 前端的 url 需要修改为别的路径
darknoll
2020-06-28 18:58:00 +08:00
@labulaka521 原来这就是你写的啊,我现在就是按照这个弄起来了,但是 /路径没法用,资源文件还要跳转,这俩问题你们最后是怎么处理的啊
yrj
2020-06-28 19:12:33 +08:00
把静态站嵌入 go
labulaka521
2020-06-28 19:31:11 +08:00
@darknoll 对我没用 /路径了 做了一个重定向 把 /路径重定向了一个新的路径 你可以参考 https://github.com/labulaka521/crocodile/blob/dev/core/router/router.go 这里面的代码
thtznet
2020-06-28 19:31:43 +08:00
还是微软大法好,WebAPI 都现成的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/685318

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX