V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
jizhihaoSAMA
V2EX  ›  Go 编程语言

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

  •  
  •   jizhihaoSAMA · 2020-08-27 11:01:00 +08:00 · 3676 次点击
    这是一个创建于 1336 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    相关的是说要用 nginx 。

    有没有不用 nginx 的方法?

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

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

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

    gin 开启一个静态服务地址,把除了 /api 接口的请求都重定向到这里,静态服务里面就放 vue 打包后的产物。以后前端更新就跑脚本直接替换就行了。
    这样做的好处就是没有跨域问题了
    jaylee4869
        8
    jaylee4869  
       2020-08-27 18:00:57 +08:00   ❤️ 1
    本质上还是需要一个 HTTP 服务器嘛。不用 Nginx 很方便,还是推荐使用。跨域问题放 gin 下托管到 /api 没问题,但其实更好的解决方案是浏览器 cors 吧。前后端都分离了,没必要放一起。
    JerryCha
        9
    JerryCha  
       2020-08-27 22:05:30 +08:00
    那就在 server 跑 dev 模式(逃
    jizhihaoSAMA
        10
    jizhihaoSAMA  
    OP
       2020-08-29 11:53:36 +08:00
    @JerryCha 有轮子哥那味了
    stone981023
        11
    stone981023  
       2020-09-09 20:34:26 +08:00
    @yaphets666 你在同一个 URL 下不会有跨域问题的, 都是 Gin 分配的路由 ,协议, url 端口号 都一样的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3166 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:34 · PVG 08:34 · LAX 17:34 · JFK 20:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.