Django+Vue 的项目实际部署的时候,使用 Django 集成 vue 到一个服务上,还是 Django 和 vue 分开?

2020-03-02 16:12:09 +08:00
 litp

想了好久 最终还是在这里提问了,因为我毕竟是属于后端

目前在架构选择,基本上定了 Django + Vue

但是实际部署的时候,就有两种情况

  1. 看到很多教程会这样推荐,就是在 Django 上集成 VUE,也就是在 settings.py 配置 templates 目录到 vue 的 dist 目录,这样可以实现,在 Django 的服务上直接调取 vue 前端,后端 api 还是使用 Django 的。

  2. Django 自己启服务,只提供 API,VUE 自己启动服务,只提供前端

    我又在想,既然前后端分离开发,那么如果按照“上 1”的方案来的话,每次前后端开发完之后,还得做单独的集成,这个时候就需要前后端一起来搞了,或者说多了一步骤,为何不直接 Django 跑自己的服务,vue 跑自己的服务,这样前后端开发完,只要接口没问题,直接就可以分别上线了,而不需要集成这一步骤。

各位大佬有什么建议?

6143 次点击
所在节点    Python
26 条回复
wnanbei
2020-03-03 14:06:54 +08:00
@LeeReamond 实际上用 nginx,那所有的前后端请求都是去请求 nginx,跟你前后端部署在哪个端口已经没关系了
encro
2020-03-03 14:13:33 +08:00
1,nginx 跑 vue 静态,对应根目录;
2,WSGI/ASGI + Supervisord 部署 django rest framework ;
3,nginx 代理 api 目录到 wsgi/ASGI 服务端口;
LeeReamond
2020-03-03 15:01:45 +08:00
@litp

cors 我也不懂。。不过我的感觉是既然本身是作为一个安全机制专门设计出来的,然后你还非得要把它关掉,岂不是有种不识好人心的感觉,总归会有啥问题吧(大概),虽然我目前做的项目都比较菜,开全域允许 cors 也没遇到啥问题,虽说我也没遇到什么非得开 cors 不可的情况。。。。

再者还有一个问题是正常生产环境,假如说你确定我要开 cors 了,安全不安全暂且不提,你总得手调个白名单,这个也增加维护的麻烦度吧

另外前端好上手的问题。。我感觉你照这个配置方法,用 webpack 部署前端和直接部署前端解耦度没有任何区别。。你要是真的分开写是不是叫别人接手的时候他还得配置一大堆 nginx,不是配置起来更麻烦了。。。
LeeReamond
2020-03-03 15:04:24 +08:00
@wnanbei

我跟 LZ 讨论的意思是,你在服务不是直接暴露 node 而是 nginx 反代的情况下,不能实现 nginx 反代 Django 到 node 的同源,node 必须开 cors。我的疑问是我感觉这并不能增大解耦。
litp
2020-03-03 23:15:22 +08:00
@LeeReamond 哦我懂你的意思了,我这样说你可能就懂了些。
1.先看开发的解耦问题
方案 1 是 可以前后端分开开发,但是最终要做集成测试,和集成之后的功能测试。
如果是方案 2,单独做各自的功能测试即可。

2.再来看部署的问题
方案 1 是一套代码走一套服务,不管是 uwsgi 也好还是其他中间件,就走一个,就可以跑整个服务
方案 2 是两个服务起步

从我的目前的理解来讲,方案 2 在人员开发、测试分配上更友好。
todd7zhang
2020-03-04 13:56:41 +08:00
@LeeReamond vue 那边线上跑的时候,根本是不用跑 node 的啊, 直接 nginx 访问到 vue 的 index.html 就完事了, 之后 /api 请求,由 nginx 反代到 wsgi 的端口就行了. 这样也不存在跨域的问题
server {
location /api/v1 {proxy http://127.0.0.1:8080/api/v1}
location / {index vue/dist/index.html}
}
忙写,可能有错. 这样怎么会有跨域问题

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

https://tanronggui.xyz/t/649132

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

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

© 2021 V2EX