北漂IT民工 的博客

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

最近发现很多人提前后端分离, 搜索网络一看,发现原来淘宝系又是国内的始作俑者.
我很赞赏阿里技术团队对中国技术圈所做的贡献,但是也很担心他们将一些错误的理念传达给更多的人.

我也在我的博客里批评过很多概念不清的情况.
目前很多错误的概念已经被大家认识到了,很多错误的概念仍然在流传中.

那么前后端分离究竟是什么个鬼呢?

国外的始作俑者:
https://www.nczonline.net/blog/2013/10/07/node-js-and-the-new-web-front-end/
但是很多人没有看到下面的评论,我摘一段:
It is front-end concern, but also back-end, since files eventually land on server side?

美团将所有的后端技术都包括到了前端,然后认为java是后端,连数据库都是java的.
链接如下:
http://tech.meituan.com/node-fullstack-development-practice.html
难道java跟node一个是后端语言一个是前端语言?
显然美团的技术博客作者根本没有搞清楚,未来node是用来替换部分或者全部的java功能的.

我们看看淘宝系的人们是如何解释的:
http://ued.taobao.org/blog/2014/04/full-stack-development-with-nodejs/

SPA式的前后端分离,是从物理层做区分(认为只要是客户端的就是前端,服务器端的就是后端),这种分法已经无法满足我们前后端分离的需求,我们认为从职责上划分才能满足目前我们的使用场景:

前端:负责View和Controller层。
后端:只负责Model层,业务处理/数据等。

这样武断的就将前端与后端划分好了?

我很奇怪的是淘宝的后端里所谓的业务逻辑是不是Controller?

根据他们的划分,我们可以在这里可以看出来,淘宝系将MVC当成是单一的概念来理解的.

这也是他们的错误的根源.

混淆了MVC与前后端

我在文章如何简单区分MVC与前后端时就这个问题其实已经表达了我的看法.
https://github.com/calidion/calidion.github.io/issues/3

不管是前端还是后端都是有MVC的.
而不是象这里所谓的前端负责V,C.
要知道现在很多前端框架都是自称MVVM而不是CVVC的.
可见淘宝这帮人的概念是很不清楚的.

MVC作为最基本的软件结构划分是没有问题的.
而将MVC拆分成前端与后端是完全错误的.

这种理念不但与时下流行的iosmorphic js相悖,也是对MVC与前后端的错误理解.

其实MVC只是一个很粗的划分,MVC更多时候应该是一个递归的概念,一个大M里有小MVC,
一个大V里有小MVC,一个大C里也一样有MVC.

所以淘宝们在做的只不过是一个大V里的小MVC.而不是所谓的前后端分离.
因为前后端本身就是分离的,并不需要你做任何的动作,前后端就是分离的.

所以MVC的划分本身就是对系统的高级抽象.而现实总是复杂的,不可能简单成MVC就这三样.
所以简单的将MVC套到你的系统里,你一定会很痛苦.

看到前后端与MVC概念混淆这类很基本的概念错误不断的从淘宝系出来还是让人非常的失望的.

传播错误容易,纠正错误难

虽然我看到过很多错误,并努力让其不断的被修正,但是一旦一个错误传播开,修正的代价就太大了.
以至于到现在很多人还开口DIV+CSS,闭口DIV+CSS.
将错误当成自然,这是一种可怕的情形.

更可怕的是将更多的开发者搞迷惑了。因为最近一堆人在提前后端分离,然后实持问题跟却前后端没有任何关系,让我又一次惊恐。
所以请各大公司的技术人员在发表自己的新概念的时候,请注意你的概念是不是逻辑正确的.
别想当然的去随意的定义概念,谢谢.