一,我有个困惑,就是开发环境中假如前端用的vue全家桶,前端的ip地址192.168.1.9:80 其实这个倒是没有什么关系。
我是在想前端和后端分离后开发,那么后端(springboot)在另一个人的电脑上IP地址是192.168.1.10:80那么应该就会产生跨域的问题,所以说后端要设置好跨域这样前端就能直接通过ip进行请求了?
所以我以上的假设是不是目前公司开发前后端分离的情景?
二,就是生产环境下的部署,据我的了解前端vue部署可以直接部署到服务器上,但是如果前端vue和后端springboot
都部署到同一台服务器上设置不同的端口,那么根据浏览器的同源策略也会是跨域的问题,那么在这种情况下部署的问题是前端要怎么修改呢?是访问ip加端口的形式进行请求?后端的跨域设置可以指定ip是这样吗?
上面是我觉得资源有限的情况下,最好的方式是不是:
三,vue部署到web服务器上,springboot部署到server服务器上,这样是目前的主流部署方式吗?
从上面的假设来看,后端都要设置跨域的问题。前端倒是没有什么特殊环境!
四,我觉得不算前后端分离的方案。就是直接在同一台电脑上开发前后端,vue直接写在springboot项目里面。这样开发和生产就可以无缝部署了,不需要担心跨域的问题。
五,还有就是前端和后端分离开发,然后再部署的时候把vue加到springboot的项目里。这样部署的时候要把接口修改下。
上面就是我的假设,也可能大多是错误的,我想问下,大家是怎么样的?
我记得好像是前端有种框架能直接模拟后端API和数据,然后直接访问。
不知道你的问题重点是啥。
到底什么是前后端分离?
对于一:在小公司里面确实是这样的,前端跟后台在同一个局域网,并且接口不需要同一授权系统授权的,可以这样进行前后端分离开发。
对于二、三:在生产环境上,前端需要部署到web服务器上的,例如
NGINX
,springboot
需要部署到Java
容器中,例如tomcat
。实际上
NGINX
,tomcat
是2
个软件,是可以部署到同一台云服务器上,访问web
的时候,是NGINX
直接提供服务,访问API
的时候,是通过NGINX
代理转发到tomcat
,由tomcat
转到springboot
。这个时候可以是跨域,也可以不是,跨域是
web
和API
不同域名,不跨越 是web
和API
同域名,由NGINX
通过 URI 中的特定字符串识别是否为访问API
, 例如https://www.abc.com/api/xxxx
,中的/api/
。对于四:在没有前后端分离的概念之前就是这么干的,那个时候需要SEO,服务端渲染,故而会使用模板,但是模板一般都依赖后台框架渲染,所以都是这种集成的方式。
对于五:也是可以的,可以做到并行开发,效率高,集成到
springboot
里面可以减少部署的麻烦,缺点是性能问题,一般来说处理web的速度远远慢于API
的执行速度,这个时候就会出现,web
这边的资源不够用,而API
有大量空余的情况,不利于动态扩容。对于模拟数据:例如
MOCK
,我的意见是开心就好,其实我更喜欢自己起一个node后端,直接返回特定的测试数据。