秒懂《前后端分离》之谬误
Posted 田一块Web全栈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了秒懂《前后端分离》之谬误相关的知识,希望对你有一定的参考价值。
关于前后端分离的提法的错误已经聊过很多期,这一次将精要再重新整理一下,以期所有人者能清晰的看清这种提法的错误之处。
逻辑上的无法验证
其实最根本的是下面三点:
前后端(Web前后端)没有合并过,提法无意义
前后端如果没有别的限定的话,通常是指Web领域。
前后端从来都是分离的,没有合并过,那么提前后端分离就是没有意义的。
前端:通常是指浏览器端
后端:通常是指服务器端
这两个基本上是物理上完全的分离的环境。
前后端代码的特点是统一化(英文:isomorphic)
两个标志:
1、Node.JS的出现,让前后端的代码统一化在一种语言上成为可能
2、Web Assembly的出现,将会让更多的语言可以统一前后端。
所以前后端的代码并没有出现分离,相反出现的是融合化,统一化。
前后端工程师的特点是全栈化
全栈化意味着人的技能更多,不会过分的区分前后端。
所以我们考察这三点,可以很容易看到《前后端分离》的提法是没有意义的,或者说是错误的。
当前后端是指运行环境时,从来没有合并过。
当前后端是指代码时,代码是趋于统一的。
当前后端是指工程师时,工程师是全栈化的。
所以我们根本没有发现任何分离的迹象。
源于错误的认识
始作俑者
最初是一个老外弄的,所以感觉有时候国人就是很盲目的。下面的图可以称为是错误之源。
这位老外仁兄水平当然是很高。他的《javascript高级编程》是我见过的关于Javascript编程语言最好的一本了。
但是也是他首次将Node.JS归入到前端之中,开启了概念错误之路。
然后被国内疯狂的转发,总体感觉很多人在接受知识的时候缺少质量控制。
你总得花点时间考虑这样是不是真的对。有个质疑的态度总是好的。
国内的所谓大公司的人不但不质疑,反而大肆宣传这种错误的观点。
虽然有很多功利的成份,但是不能底限。
国内大公司无脑技术人员
然后美团,淘宝都出来了。
然后某宝有某些人不要脸的重新定义了前后端。看来Java与Node.js一个运行在服务器,一个运行在浏览器。
但是Node.js不是服务器端的JS吗?
可见某宝的某人不但不懂Node.js,不懂前端,一样是不懂什么是服务器的。
不过现在相信大家都知道了Node.js不是前端这个非常简单的道理。
Node可以是前端工具链接,可以自动化前端开发,但是却不是前端。因为前端就是浏览器端的html+CSS+JS。
而Node.js是服务器端的JS。
我只能说某宝的人胆很肥,就差重新定义Web了。
国外其实并不没有人在搞什么前后端分离
国外的框架都是在搞isomorphic js,比如meteor。
或者说是前端的mv*。
根本不存在什么前后端分离之说,当然也有人认为模板应该属于后端。比如比较知名的PPK,他是认为模板应该是属于后端的。
但是最终没有一个前端模板真正的属于后端,只不过新的框架都是两端都可以用的。不管是react/ng2都是可以前可后的框架。
所以没有任何的分离之象。
国内的所谓前后端分离是建立在前后端不分的基础之上的
将Node.js当成是前端,本质是混淆了前端的概念。
通常前端只是指浏览器的前端。
但是这些人在讲前后端分离是实际上是指他们的团队职能的划分。
将前端组的工作划分到了前端,所以才会有将Node.js当成是前端的可笑之举动。
实际上很多人根本不知道什么是前端,什么是后端。有些搜索引擎工程师将什么都当成是前端,这种概念不分的情况是很可怕的。
这种通过语言来区分前后的情况是很无知的
真相是什么?
前端的功能增强是真相,分离是骗局
1、分离是一直有的。
2、服务器的API也是一直有的。
所有的CS开发都是基于API的。
REST只是另一种API,没有什么任何的新奇之处。
3、唯一的不同是HTML+CSS+JS的整体功能增强了
4、最重要的是,不需要服务器,光是HTML+CSS+JS就可以直接运行
5、原因是网络请求的限制没有了。象cors之类的功能出现后,HTML+CSS+JS就是一套完整的客户端开发方案。
模板的位置
淘宝们的技术仍依托于模板,所以他们一直在争论模板的位置应该在那里。
而未来呢,模板可能只会放在前端。
所以模板放在那里都跟前后端无关。
RIA重现(SPA)
实际上Web很早就有过RIA时期,只不过那个时期的RIA是基于第三方技术的比如Flash,ActiveX等。
而现在呢?只要是纯的前端技术就可以实现了。得益于强大的浏览器API与新潮的HTML+CSS规范,还有相应的独立的API规范。我们发现不管是视频,音频,3D,Canvas等都已经在前端解决了。
所以根本不存在前后端分离,而是前端能力大大的增强了。
几乎所有的东西都可以放在前端处理了。对于大部分的网站来说,也许只有数据与业务逻辑不能直接放在前端了。
小结
时至今日,相信前后端分离之错误是时候终止了。
同时也给我们一个思考就是为什么国内的一些所谓的大公司的技术人员特别容易在概念上不别区分呢?有时候还很喜欢引领错误之风潮,特别是象div+css之灰的严重的概念错误可以留存十多年之久。这一些还是有很多值得思考之处的。
个人对于大公司宣传错误是非常厌恶的,所以不会吝惜使用一些比较态度明显的词汇的。希望不要再出现大公司技术人员在基本概念上进行不断的重复错误。
田一块Web全栈公共号是一个追求正确为前提,尽量将内容以容易理解方式表达出来的一个公共号。
同时欢迎投稿,如有产生打赏等收入都归原作者所有,公共号不会扣收任何收益。但是平台对于内容的正确性有比较高的要求,所以欢迎自信的您投稿。投稿方式见公共号菜单。微信公共号账号:frontend-guru。
# 技术交流QQ+
nodejs全栈开发群: 423652352
# 开源贡献QQ+
nodejs开源项目交流群: 312685910
以上是关于秒懂《前后端分离》之谬误的主要内容,如果未能解决你的问题,请参考以下文章