• 请不要在回答技术问题时复制粘贴 AI 生成的内容
darknoll
V2EX  ›  程序员

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

  •  
  •   darknoll · Jun 28, 2020 · 6325 views
    This topic created in 2321 days ago, the information mentioned may be changed or developed.

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

    Supplement 1  ·  Jun 28, 2020
    我已经用 go-bindata 把前端嵌进去了,但是能不能后后端共用一个端口啊
    Supplement 2  ·  Jun 28, 2020
    领导要求跑在 win 上,不装任何 web 服务器,只跑一个 exe,要是能用 nginx,我也不要来问了啊
    29 replies  •  2021-03-18 19:40:34 +08:00
    fucker
    fucker
    Jun 28, 2020
    1
    1. 反向代理
    2. 将 index.html 作为静态文件让 go 返回给前端,其他目录我记得 gin 有 r.StaticFS("/static", http.Dir("./static"))
    hoosin
    hoosin
    Jun 28, 2020
    2
    nginx 反向代理吧
    deprecatedCoder
    deprecatedCoder
    Jun 28, 2020❤️1
    3
    ```

    ginRootPath.Use(static.Serve("/", static.LocalFile(common.Cfg.Web.FrontDir, true)))
    ginRootPath.StaticFile("situation", common.Cfg.Web.FrontDir+"/index.situation.html")
    ```
    deprecatedCoder
    deprecatedCoder
    Jun 28, 2020
    4
    import "github.com/gin-contrib/static"
    api 的路由组前缀不要和 前端编译好的代码冲突就可以了
    zhwithsweet
    zhwithsweet
    Jun 28, 2020
    5
    反带
    darknoll
    darknoll
    OP
    Jun 28, 2020
    6
    统一回复下,领导说不用反代,不装 nginx 之类的 web 服务器,直接运行一个 exe
    HanMeiM
    HanMeiM
    Jun 28, 2020
    7
    前端或者 api 单独一个 location 就好了
    Fitz
    Fitz
    Jun 28, 2020
    8
    http.Handle("/", http.FileServer( http.Dir("./static")))
    wszbdyyy
    wszbdyyy
    Jun 28, 2020
    9
    nginx 反代
    maoxs2
    maoxs2
    Jun 28, 2020 via Android
    10
    1. Vue 用 npm 生成 dist 文件夹
    2. Go 里用 statik 打包成变量指向文件夹(类似的好几个)
    3. 确认 server 里 static 等目录指向这个变量
    4. go build .
    5. 就一个文件,不用夹带文件夹了
    Hanggi
    Hanggi
    Jun 28, 2020
    11
    之前正好用 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
    gamexg
    Jun 28, 2020 via Android
    12
    可以,
    做过类似的

    使用 vfsgen 等类似的库内嵌 html 文件到 exe 即可。
    scukmh
    scukmh
    Jun 28, 2020
    13
    emmmm, 我做过这件事,但可执行文件比较大。大概就是楼上的思路,把前端生成的代码打包进二进制文件里。
    deloved
    deloved
    Jun 28, 2020
    14
    为啥要起一个端口···nginx 代理一下不就行了么
    mlboy
    mlboy
    Jun 28, 2020 via iPhone
    15
    可以,了解下 go 打包资源文件二进制
    labulaka521
    labulaka521
    Jun 28, 2020 via iPhone
    16
    我们前段时间也遇到这个问题 可以参考一下我写的一篇文章 https://labulaka521.top/posts/4868566 不知道你用的 web 框架是啥 如果是 gin /目录就不能使用了 前端的 url 需要修改为别的路径
    darknoll
    darknoll
    OP
    Jun 28, 2020 via Android
    17
    @labulaka521 原来这就是你写的啊,我现在就是按照这个弄起来了,但是 /路径没法用,资源文件还要跳转,这俩问题你们最后是怎么处理的啊
    yrj
    yrj
    Jun 28, 2020 via iPad
    18
    把静态站嵌入 go
    labulaka521
    labulaka521
    Jun 28, 2020 via iPhone
    19
    @darknoll 对我没用 /路径了 做了一个重定向 把 /路径重定向了一个新的路径 你可以参考 https://github.com/labulaka521/crocodile/blob/dev/core/router/router.go 这里面的代码
    thtznet
    thtznet
    Jun 28, 2020
    20
    还是微软大法好,WebAPI 都现成的。
    djoiwhud
    djoiwhud
    Jun 28, 2020 via Android
    21
    很多种方案。
    1,cdn 部署前端
    2,go+go http file server
    3,go+nginx
    如果是非管理后台类型,推荐方案 1
    Nzelites
    Nzelites
    Jun 28, 2020
    22
    不嵌二进制也可以 go 直接 load 文件做静态资源返回,build 的时候目录管理下就好
    phpbest
    phpbest
    Jun 29, 2020
    23
    skiy
    skiy
    Jun 29, 2020
    24
    可以。搞过。
    Vue 走的是 hash 路由,跟 Go,没多大关系,就相当于你只要给一个 Controller.Func 一个入口,那个入口指向 dist 位置就好(也可以像上面有仁兄说的用 FileServer )静态文件也要配置一下。
    viazure
    viazure
    Jun 29, 2020
    25
    IIS 总可以吧,代理 + url 重写组件
    zhuweiyou
    zhuweiyou
    Jun 29, 2020
    26
    你的 go 框架应该有设置 assets / static / public dir 之类的方法吧,指向你的静态目录就行了呀。
    AAAmos
    AAAmos
    Mar 17, 2021
    27
    遇到了同样的情况?题主怎么解决的?
    AAAmos
    AAAmos
    Mar 18, 2021
    28
    @darknoll 老铁你的问题怎么处理的啊?
    darknoll
    darknoll
    OP
    Mar 18, 2021
    29
    @AAAmos 后端用 gin-contrib/static 托管静态网站,前端使用子路径
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1334 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 22:25 · PVG 06:25 · LAX 14:25 · JFK 17:25
    ♥ Do have faith in what you're doing.