最近有个新项目,想用 Go gin + React JS ,参考了一下
https://letscode.blog/2021/06/25/react-gin-blog-3-19-add-react-frontend/ https://letscode.blog/2021/06/25/react-gin-blog-2-19-starting-gin-server/
assets
目录运行 npm start
启动一个 React ,监听端口 http://localhost:3000/go run main.go
启动 web server ,监听 localhost:8080感觉这个方法有点怪,根据经验,应该只需要一个 8080 就可以了,不知道是不是我看漏了什么步骤?或者大家有更好的集成方案文档推荐吗?
1
Leviathann 2023-02-08 09:50:32 +08:00 1
开发时后端随便设置一个,前端监听 8080 ,转发到后端
|
2
Nazz 2023-02-08 09:51:21 +08:00 1
前端项目在开发时一般会用到 nodejs express 框架启动一个 web server, 所以需要监听新的端口, 而部署的时候是打包好的静态文件.
|
3
Trim21 2023-02-08 09:56:30 +08:00 via Android 1
一般是在 3000 端口启动 react 的开发进程,然后转发 API 请求到另一个端口的后端。你这个例子里的 assets 是项目的根目录。
|
4
hejinliangsb 2023-02-08 10:03:00 +08:00 via Android
前后端分离不集成
|
5
zhanshi OP @Leviathann @Trim21 @Nazz 谢谢,已经发送感谢
找到一篇文章 https://hakaselogs.me/2018-04-20/building-a-web-app-with-go-gin-and-react/ 所以目录架构应该是类似 ![img]( https://p.ipic.vip/a3bnf9.png) 即 index.html: ``` <script type="text/babel" src="js/app.jsx"></script> ``` 然后前端开发把 ReactJS 打包到 app.jsx 里面,后台开发专注写 restful API ? |
7
zhanshi OP @Nazz 好的,谢谢,我搜索一下配置代理的方法。
一般来说,请问这类项目是分 2 个 repo 吗?就是一个后台 go gin ,一个前台 react ,然后 react 项目做 CI 的时候自动把编译的最新文件拷贝到 go gin 项目? |
8
Jammar 2023-02-08 10:21:35 +08:00
把前端打包成静态文件,用 go 部署,embed
|
9
darkengine 2023-02-08 10:21:36 +08:00
npm start 只是开发环境,正确的实践是 npm build 之后,把 build 目录传到服务器,用 nginx 来 serve 就好了。
|
10
Nazz 2023-02-08 10:26:24 +08:00
@zhanshi 一个人开发的话一个 repo 也行, 分目录就可以了. 生产环境一般是前端把代码打包上传到 CDN, 后端构建镜像部署到 k8s. 资源文件很少的情况下可以用 go embed 一把梭.
|
11
zhanshi OP |
13
28Sv0ngQfIE7Yloe 2023-02-08 10:34:38 +08:00
为啥放一个 repo 里?
|
14
feelinglucky 2023-02-08 10:44:22 +08:00
可以看看我们的开源项目,用的是和楼主说的一样的方案 https://github.com/answerdev/answer
|
15
NakeSnail 2023-02-08 10:45:22 +08:00
他两有啥好集成的
|
16
zhanshi OP @Nazz 所以应该参照 https://hakaselogs.人工断开 me/2018-04-20/building-a-web-app-with-go-gin-and-react/
然后 index.html 的内容是如下吗? <script type="text/babel" src="INTERNAL-NGINX-URL/app.jsx"></script> |
17
dobelee 2023-02-08 10:54:30 +08:00
前后端分离,gin 和 react 没有半毛钱关系。两个完全独立的系统。
|
18
liuxu 2023-02-08 12:06:51 +08:00
|