什么是前后端,有没有前后端分离,还有如何区分mvc与前后端分离

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是前后端,有没有前后端分离,还有如何区分mvc与前后端分离相关的知识,希望对你有一定的参考价值。

参考技术A 1>>前后端分离的意思是,前后端只通过 JSON 来交流...

同意其他几位,JSON 只是一种可选的协议,而不是唯一,也未必是前后端通信的最佳方案。

2>>组件化、工程化不需要依赖后端去实现...有哪些好处或弊端?

前端的组件化、工程化,js 等代码越来越胖,有点类似于过去 C/S 时代的 fat client。所以这个问题相当于,计算是主要放在 client 好,还是 server 好?

Fat client 好,还是 thin client 好,取决于所开发应用、产品、系统的类型、规模和特点,其中一些权衡因素主要包括软件复杂度、人机交互模型、网络带宽、server 与 client 的处理能力等等。无所谓好坏,适合就好。

Client-side MVC 确实是一个趋势,Web 架构设计上的一个创新。本回答被提问者采纳

关于前端,后端,MVC,前后端分离,前后端同构

关于MVC,前后端,以及前后端分离,还有前后端同构的问题其实我已经分析的非常清楚了。
但是为了能够让所有人更加系统的从各个角度理解他们之间的关系,我在这边再重新总结,并提合并成一篇文章。

理解所有这些问题,首先要搞清楚的是:


前后端是Web前后端


  1. 不是项目前后端

  2. 也不是服务器前后端

我们通常所说的前后端是特指Web的前后端。
他不是项目的前后端,也不是服务器的前后端。
因为对于Web来讲,前后端是确定的。
前端就是前端,后端就是后端,并不存在分离的问题。
所以我们得到第二个重点。


不存在前后端分离的问题。如果有,那都是MVC分离


同时大多数的所谓前后端分离,实际上都是错误的。
而本质上这些所谓分离都是MVC的分离。


前后端存在着同构化,而不是分离


对于以后的Web来说,不需要分离,而是需要合并的。这种趋势在Nodejs出来后显得越来越显著。目前已经有很多Nodejs的库是前后端共通的,也就是所谓的前后端统一或者同构(即英文里的isomorphic js)。

当有象JS这种前后端两栖的语言出现时就促成了前后端的同构。

所以我们可以看到并不存在前后端分离,但是存在MVC的分离。
前后端存在的现象是代码共享,即前后端同构。


Web Assembly将会进一步促进前后端同构


由于新技术Web Assembly的推出,未来会有更多的语言可以在浏览器端执行,所以支持前后端同构的方案与语言将会越来越丰富。

下面列举出一些相关文章,用于深入的理解这个问题:


前端与后端是如何区分的?


讨论文章:

Web开发的前端与后端的界线在那里?

结论:通过运行环境区分:浏览器端运行的内容是前端,服务器端运行的内容是后端

结论:通过运行环境区分:浏览器端运行的内容是前端,服务器端运行的内容是后端


MVC与前后端有什么关系?

讨论文章: https://github.com/calidion/calidion.github.io/issues/3

结论: MVC可以存在于前端,也可以存在于后端。


前后端分离的问题存在吗?

讨论文章:

并不存在前后端分离的问题

结论:并不存在前后端分离的问题,因为前后端是天然分离的,基于结论1,。引出一个新的话题,那就是前后端同构。未来的Web技术更多的是合并,而不是分离。

注:

1. 分离是神话时代就已经确立的,没有必要再说前后端分离了。
2. 目前的所有分离都是基于MVC的分离。
3. 现在所谓的将模板放到node而称为前后端分离的说法是完全错误的
4. 目前前后端都有很多强大的MVC框架,而拆分MVC是永恒的话题。


前后端同构


说明:

  1. JS是目前唯一的可进行前后端同构的语言

  2. Web Assembly可以导致更多的可实现前后端同构的语言出现

  3. 目前主张前后同异的框架有: reactjs, angular2, meteor以及很多模板类,通用类库

结论:前后端同构是未来的一个方向,至于最终能不能成为主流,还有得时间的考验。个人预测同构与异构会长期共存,那些通用的功能将会越来越多的采用同构。


关于项目的前后端与Web的前后端

说明:

  1. 我对很多人的逻辑是很无语的

  2. 已经不止有一次有人跟我说项目的前后端了

  3. 我想说项目的前后端你爱怎么划分就怎么划分,但是跟我们这里讨论的Web前后端没有半毛钱关系。

  4. 在你的项目里,你就是将MYSQL当成是项目的前端,也不关我的事。

  5. 但是,如果你想把MYSQL当成是Web的前端,那就别怪我批你,骂你。你的逻辑是体育老师教的?

  6. 如果还有人再提项目的前后端问题的,请你好好区分清楚什么是Web的前后端,什么是项目的前后端。