前台和后台该不该写在同一个项目内?

Lee.Sparkling
  • 12

来自小白的疑惑:
前台和后台要不要写在同个项目内?
什么情况需要呢?如果需要,有哪些要求呢?

如果前台用Vue框架
后台使用React框架,能写在同个项目内吗?

如果分开写的话,部署到网上的时候,需要两个域名?

...困惑,求解答

回复
阅读 973
6 个回答
✓ 已被采纳

看你怎么论”项目“了。npm init出来的是一个项目,springcloud出来的也是一个项目,放在一个文件夹里的所有代码是一个项目,好几个GitHub仓库在一起是一个项目。

什么前端用Vue后端用React,那是你对”项目“没有明确的规划。ToC的一个WebApp应用用vue开发的,在GitHub上是A仓库,ToB的管理后台WebApp应用用react开发,在GitHub上是B仓库,使用同一个Java后端服务在GitHub上是C仓库。它们是同一个项目”某某某商城项目“。

那你说到底什么是项目?

一个文件夹放三个文件夹,三个文件夹对应三个GitHub仓库,有没有问题?没啥问题呀。那一个文件夹包含的三个文件夹直接就是一个GitHub仓库,有没有问题?也没有问题啊,你一个人开发,功能迭代都是线性的,就一个仓库也无所谓呀。至于部署,写CI也就是目标文件夹不一样而已。

所以分不分开跟什么有关?

至于需要几个域名,一个域名子路由,多个子域名,甚至多个域名,对于Nginx叫事儿吗?域名上花钱多钱少看看自己兜就明白了。

一个域名就一定是一个项目吗?显然不是,移动端我用m.xxx.com,pc端我用www.xxx.com,实际访问的都是vue开发的ToC的应用,很神奇的是我用了响应式开发。那你说是两个项目还是一个项目呢?

最后想想张三丰问张无忌的那个经典问题--现在你还记得多少。

可以写在同一个项目里,有两种写法:

一种就是一个项目一个文件夹,放在同一个git项目根目录下,其实就是两个项目各自在一个文件夹里,本质还是两个项目,这种情况前台项目配域名,后台项目访问ip就行,不需要域名,因为后台一般就是给自己人用的,当然你配个域名也行。这种情况前台后台项目完全没有关系,可以前台vue后台react。

还有一种就是真正意义上的一个项目,通过路由去控制访问前台后台,但是这种不安全,写在一个项目里,一个域名就行,当然vue和react就只能选一个了。

一般前台和后台项目是分开的,他们调用的api的鉴权也是不一样的,如果是个特别简陋的小项目,可以把前后台写在一个项目,api的鉴权可以通过一些约定api路由的规则去做。

理论上要分开,前后台技术栈都不一样。如果你是一样的话你想放一个里也不是不可,但是不管一不一样个人觉得还是分开好。域名不一定要两个,域名要几个跟几个项目没有关系

我最近刚用 Element-ui-Admin 在前后端,说下我的思路
最开始我想分开写,因为毕竟前后端业务逻辑侧重点不同,甚至前端我都极少用到 Elemnet ,但是由于我面对的业务特殊性,有很多自定义组件还是有重复的,于是我考虑融合到一个项目里
当然这里还有个巧合,就是接口那边把前后端用户写到一个表里了,他们的登陆方法都是相同的
当把前后端融合到一个项目里的时候,最麻烦的就是路由和权限验证问题
我是通过前后端约束,也就是和接口那边约定每个页面的权限Key,然后前端静态化一份,最后登陆的时候根据接口返回来的权限 keys ,去实现前端权限路由
这里需要后端同步验证的,毕竟前端不安全

最后的痛点就是调试阶段,不断切换前后端登陆的问题,我是笨方法,通过登陆时指定登陆类型,然后静态化两份路由表,最后根据不同登陆类型,去动态创建路由,这个时候牵涉到一个路由刷新问题,我目前还没有解决,也就是后台菜单登陆的时候,不同权限用户的菜单权限不同,但是路由刷新了,组件的没办法自动更新,必须要手动F5一下才正常,这个问题我还没有解决

总的来说,通过这次经验,我觉得还是分开的比较好,因为分开能使得各自的路由维护效率更高,而且业务处理方式也更清晰,合并在一起狠容易走到为了统一而统一的陷阱

没有绝对,无论分开还是放到一起都有好处,也都有利弊,你自己取舍就行了,没有绝对,你放一起也行,分开也可以,都是有意义的

你知道吗?

宣传栏