前端还使用原来的路由,后端路由统一加个 /api 之类的,咋整?
1
fucker 2020-06-28 14:44:43 +08:00
1. 反向代理
2. 将 index.html 作为静态文件让 go 返回给前端,其他目录我记得 gin 有 r.StaticFS("/static", http.Dir("./static")) |
2
hoosin 2020-06-28 14:58:08 +08:00
nginx 反向代理吧
|
3
deprecatedCoder 2020-06-28 15:07:21 +08:00 1
```
ginRootPath.Use(static.Serve("/", static.LocalFile(common.Cfg.Web.FrontDir, true))) ginRootPath.StaticFile("situation", common.Cfg.Web.FrontDir+"/index.situation.html") ``` |
4
deprecatedCoder 2020-06-28 15:08:14 +08:00
import "github.com/gin-contrib/static"
api 的路由组前缀不要和 前端编译好的代码冲突就可以了 |
5
zhwithsweet 2020-06-28 15:09:45 +08:00
反带
|
6
darknoll OP 统一回复下,领导说不用反代,不装 nginx 之类的 web 服务器,直接运行一个 exe
|
7
HanMeiM 2020-06-28 15:50:29 +08:00
前端或者 api 单独一个 location 就好了
|
8
Fitz 2020-06-28 15:53:27 +08:00
http.Handle("/", http.FileServer( http.Dir("./static")))
|
9
wszbdyyy 2020-06-28 15:53:48 +08:00
nginx 反代
|
10
maoxs2 2020-06-28 15:56:52 +08:00 via Android
1. Vue 用 npm 生成 dist 文件夹
2. Go 里用 statik 打包成变量指向文件夹(类似的好几个) 3. 确认 server 里 static 等目录指向这个变量 4. go build . 5. 就一个文件,不用夹带文件夹了 |
11
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{}) 这是你想要的吧。 |
12
gamexg 2020-06-28 16:22:43 +08:00 via Android
可以,
做过类似的 使用 vfsgen 等类似的库内嵌 html 文件到 exe 即可。 |
13
scukmh 2020-06-28 16:23:13 +08:00
emmmm, 我做过这件事,但可执行文件比较大。大概就是楼上的思路,把前端生成的代码打包进二进制文件里。
|
14
xiayun 2020-06-28 17:21:48 +08:00
为啥要起一个端口···nginx 代理一下不就行了么
|
15
mlboy 2020-06-28 17:41:54 +08:00 via iPhone
可以,了解下 go 打包资源文件二进制
|
16
labulaka521 2020-06-28 17:56:09 +08:00 via iPhone
我们前段时间也遇到这个问题 可以参考一下我写的一篇文章 https://labulaka521.top/posts/4868566 不知道你用的 web 框架是啥 如果是 gin /目录就不能使用了 前端的 url 需要修改为别的路径
|
17
darknoll OP @labulaka521 原来这就是你写的啊,我现在就是按照这个弄起来了,但是 /路径没法用,资源文件还要跳转,这俩问题你们最后是怎么处理的啊
|
18
yrj 2020-06-28 19:12:33 +08:00 via iPad
把静态站嵌入 go
|
19
labulaka521 2020-06-28 19:31:11 +08:00 via iPhone
@darknoll 对我没用 /路径了 做了一个重定向 把 /路径重定向了一个新的路径 你可以参考 https://github.com/labulaka521/crocodile/blob/dev/core/router/router.go 这里面的代码
|
20
thtznet 2020-06-28 19:31:43 +08:00
还是微软大法好,WebAPI 都现成的。
|
21
djoiwhud 2020-06-28 20:12:19 +08:00 via Android
很多种方案。
1,cdn 部署前端 2,go+go http file server 3,go+nginx 如果是非管理后台类型,推荐方案 1 |
22
Nzelites 2020-06-28 23:01:13 +08:00
不嵌二进制也可以 go 直接 load 文件做静态资源返回,build 的时候目录管理下就好
|
23
phpbest 2020-06-29 10:08:56 +08:00
|
24
skiy 2020-06-29 11:33:48 +08:00
可以。搞过。
Vue 走的是 hash 路由,跟 Go,没多大关系,就相当于你只要给一个 Controller.Func 一个入口,那个入口指向 dist 位置就好(也可以像上面有仁兄说的用 FileServer )静态文件也要配置一下。 |
25
viazure 2020-06-29 14:07:19 +08:00
IIS 总可以吧,代理 + url 重写组件
|
26
zhuweiyou 2020-06-29 14:30:57 +08:00
你的 go 框架应该有设置 assets / static / public dir 之类的方法吧,指向你的静态目录就行了呀。
|
27
AAAmos 2021-03-17 10:17:23 +08:00
遇到了同样的情况?题主怎么解决的?
|