不使用 nginx, vue.js 如何和 gin 组合后部署到服务器上面?

2020-08-27 11:01:00 +08:00
 jizhihaoSAMA

自己尝试着做一个前后端分离的小项目,前端 vuejs 后端 gin, 我之前一直以为前后端路由在服务器上面都开着然后进行访问。最近试了下 vue.js 的部署,发现 vuejs 直接打包过去不行,网上说是要 npm run build 打包成静态网页。 网上搜了一下,知乎上面有这个问题: https://www.zhihu.com/question/46630687

相关的是说要用 nginx 。

有没有不用 nginx 的方法?

3687 次点击
所在节点    Go 编程语言
11 条回复
rrfeng
2020-08-27 11:06:10 +08:00
gin.ServeStatic() 之类的
yaphets666
2020-08-27 11:10:36 +08:00
nginx 主要解决跨域问题和负载均衡.你这不存在负载均衡.但是你不用 nginx 怎么解决跨域问题呢? 不解决跨域问题当然不行啊 接口都访问不了. 还有你 vue 项目中的静态文件的引用路径 这都是问题
XCFOX
2020-08-27 11:15:30 +08:00
你还可以用 caddy https://caddyserver.com/
比 nginx 方便很多,还能自动 https
jizhihaoSAMA
2020-08-27 11:16:11 +08:00
@yaphets666 跨域问题通过 gin 已经解决了。我在本地上 前端路由跑 8080 端口,后端跑 8081 端口,设置好跨域问题后是能够正常进行交互的
maichael
2020-08-27 11:17:44 +08:00
……,静态文件要解决啥跨域问题,你后端路由直接指向静态文件不就好了?后端的接口就前缀加 api 之类的。
saltbo
2020-08-27 16:44:17 +08:00
这个最佳实践是开发环境在 vue.config.js 配置 web-dev-server 来代理后端接口。 生产环境通过 gin 来挂载静态文件。当然,更好的方式是直接嵌入到 go 源码中。可以参考我正在做的开源项目 zpan

https://github.com/saltbo/zpan
https://github.com/saltbo/zpan-front

master 比较老了,develop 分支正在重构中...
MrTreasure
2020-08-27 17:42:10 +08:00
服务端的接口统一挂到路由 /api 下面

gin 开启一个静态服务地址,把除了 /api 接口的请求都重定向到这里,静态服务里面就放 vue 打包后的产物。以后前端更新就跑脚本直接替换就行了。
这样做的好处就是没有跨域问题了
jaylee4869
2020-08-27 18:00:57 +08:00
本质上还是需要一个 HTTP 服务器嘛。不用 Nginx 很方便,还是推荐使用。跨域问题放 gin 下托管到 /api 没问题,但其实更好的解决方案是浏览器 cors 吧。前后端都分离了,没必要放一起。
JerryCha
2020-08-27 22:05:30 +08:00
那就在 server 跑 dev 模式(逃
jizhihaoSAMA
2020-08-29 11:53:36 +08:00
@JerryCha 有轮子哥那味了
stone981023
2020-09-09 20:34:26 +08:00
@yaphets666 你在同一个 URL 下不会有跨域问题的, 都是 Gin 分配的路由 ,协议, url 端口号 都一样的

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

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

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

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

© 2021 V2EX