问题来源于知乎提问,截图以下: 前端
论坛上人们常常会为先后端的问题展开撕 x 大战,不少时候问题的根源是没有定义好先后端的概念.vue
由于这两个词自己就很笼统,就我我的而言我是这样理解的webpack
狭义前端: 就是纯粹的 Web 前端,基于浏览器技术是前端应用c++
狭义后端: 就是纯粹的 Web 后端,基于服务器为前端提供接口的后端应用git
因此在理清这些概念后咱们才能够正常讨论问题,一些后端把大数据和人工智能跟后端联系在一块儿是很扯淡了,大数据开发有专门的数据工程师操盘,人工智能也有对应的算法工程师操盘,除了一样运行在后端,跟web 后端是邻居之外,没有太大关系.程序员
一样,前端也不能把什么游戏开发跟本身扯到一块儿,web 端游戏除了跟前端一样运行在浏览器之外,也没啥太大关系.github
目前的现状也很明显,以阿里为首的淘系技术(类电商)其难点就是在于后端,前端仅仅是薄薄的展现层,好比玉伯的回答web
一般一家公司,后端人数远远多于前端,后端项目的复杂度也远高于前端,这是国内很现实的状况.算法
一样还有一个常见的说法,前端转后端隔层山,后端转前端隔层窗户纸,不少后端程序员表示转到前端发现工做轻松了不少,框架学得很快,两天就上手工做了,其实这不是吹牛,这确实是当前的现状.后端
那么是否能够作下定论了,前端确实只是负责渲染的展现层,做为后端辅助是很正常的?
是的,在当前环境下这个说法无疑是成立的,但是咱们忽略了一个基本状况,目前国内绝大部分企业都是面向 C 端企业,好比美团、滴滴、知乎、淘宝、百度、头条等等,能数得上的巨头企业无疑服务于 c 端用户,若是你业余对产品有必定研究就应该知道一个基本理念,c 端产品的设计必须越简单越好,c 端产品必须基于一个基本假设--用户都是傻子
举个例子,即便现在淘宝注册已经如此方便了,在 2017 年淘宝赞助的春晚当夜淘宝的客服炸了,缘由不是服务器顶不住,而是下沉到三四线甚至县城的淘宝新用户疯狂打电话问淘宝客服如何绑定银行卡?
因此在这种产品设计理念下,前端根本不可能作出什么花样来,由于前端产品的复杂度永远不能超过 c 端用户理解能力的下限。
并且巨头们的产品形态也决定了其不可能有复杂的前端交互,美团、淘宝这种电商性质的网站自己就是展现商品的,其最复杂的点也不过是购物车的逻辑和下单逻辑,而知乎、头条这种社区、新闻类的应用则更简单,几乎就是展现文章。
咱们能够看到,目前巨头们的产品性质和用户群体决定了前端的复杂度,在这种状况下前端的的确确是打辅助的,后端承接了巨大的业务逻辑,并且又由于面向 C 端,其用户量巨大、用户敏感度极高,越是这种状况下越要保证服务器的高可用和高并发,这个时候服务端的架构设计几乎是决定了产品的生死,而前端是够用就行。
因此,能够给前端判死刑了?
竟然有之前端为核心的商业产品?前端怎么可能为核心技术,并且是厚厚的一层?
一年多之前我曾经作过一个项目,里面有一个需求就是在前端读取本地 excel 文件渲染到浏览器里,而且经过浏览器能够作必定程度的计算、修改、排序等操做,这是我目前作过最复杂的前端项目了,虽然具体的技术细节早已经忘记了,可是我还记得当时急的挠头的状态,最终我也没有作的很漂亮,从 github 搜罗了各类开源项目拼凑成了一个可用的功能。
在那以前我我的对本身的技术能力仍是有必定信心的,可是那个功能把我搞得很狼狈,首先得分析一下这个需求:
有人会说,这还不简单,github 上搜相关开源项目组装就完事了,但是问题就在于这个需求不是简单的组装,咱们还得考虑现实状况。
你必定想知道我是如何解决这个复杂问题的。。。 其实我没有解决得很优雅,由于这个需求的复杂度太高,若是完美解决甚至能够单独作一个创业项目了,最终我在web worker 中解析 excel,浏览器假死的状况就迎刃而解了,排序和计算的卡顿我分了两种状况,在数据量低于 5000 的时候直接有主线程计算,超过这个数字一样开启 web worker,毕竟主副线程通讯也是要开销的,表格储存则更粗暴,直接在本地全量保存,每隔 10 秒钟同步一次,上传以后再在本地清除.
咱们试想下若是上述的需求不是一个简单的功能需求,而是一个产品呢?若是把微软 office 系列、Adobe 全家桶、ide 搬到浏览器里会怎么样?
固然,我知道已经有公司作出相似产品了,这些产品就是所谓的前端核心技术产品,这些产品也有一个共同特色,用户是专业人员或者 B 端用户,这个时候产品的设计理念是尽量把功能作强大来知足专业人士的需求,而非 c 端尽量简单来保证用户能理解。
除此以外,这种形式的产品与 c 端产品还有一个巨大不一样,那就是用户数量,因为面对专业人士这种小众群体,其用户量在中前期并不会太多,甚至作到后面的用户量可能都跟今日头条差个数量级,这个时候后端的高并发彷佛并非最棘手的,而产品的核心卖家反而在前端的功能开发上。
讨论到这里咱们是否是能够达成一个共识?面对普通消费者的流量应用以淘宝、头条为首,其产品形态和用户群体致使其前端不可能作出太复杂的应用,而前端为核心卖点的应用集中在相似于在线office这种面向专业人士的产品上。
那么为何如今的现状是展现类的流量应用占据绝对主导?
可是这个现状不会维持过久,BS 架构早晚会进入这些超级应用的法眼,浏览器+云会是这种产品的常态,会有愈来愈多的超级应用进入浏览器,前端这个年轻的行业也会正式进入下半场.
我是基于如下判断:
因此,下半场的前端可能要求会愈来愈高,好比须要更好的基本功(算法功底),好比须要一门 native 语言(c/c++),好比须要良好的图形技术(webgl、webgpu)。
到如今为何只看到了前端愈来愈重要,技术要求愈来愈高,不见涨工资?
目前前端职场其实也处于一个平衡期,由于前端红利其实也在这两年消失了,前端 leader 升职最快的那几年刚好是前端工程化运动最热烈的那几年,2011-2016也正是三大框架前后发布,ES2015 逐渐普及,Babel、webpack 这些事实标准诞生的时间段,那个时候把项目从 JQuery 重构到 React 就是大功一件,足以在升职答辩上赚足了眼球,那个时候在项目里用上 Webpack 就叫工程化也是拿绩效的利器,目前大部分前端 leader 就是靠着一波红利走上个管理岗或者高 P,因此红利期不只对于商业公司,对于职场人士也是适用的。
2016 年以后 IT 职场的红利已经转移到区块链和人工智能领域,毕竟用 TensorFlow 调个参当调参小王子也能拿 50w 年薪的年代没过去多久,这么看 AI 的红利可比前端大多了。
是否是能够判断,前端的职场新人空间已经被红利期的老人们挤压没了?
在固定的产品需求下实际上是这样的,一个企业一旦不扩大,你负责的业务也不增加,当前的产品形态也不变化的状况下倒是机会并很少,毕竟升职加薪的前提是得有坑,而且你得有成绩,在红利期结束后虽然你还有机会,可是机会确实很小了,由于须要作出更有价值的事情。
可是大部分公司不可能一成不变,随着咱们上节提到的前端下半场的到来,好比云计算公司须要把开发者紧紧绑定在本身的云端环境上,那么他们就须要云端的 WebIDE,这种 B端面向专业人士的复杂前端项目是否是就是个挑战同时也是机遇?没有必定技术储备的前端根本 hold 不住这种项目,就如同我面对 excel 需求时那样无力,一样是写新闻展现页面你们的差距都不大,这个时候技术不重要,可是随着项目复杂度的上升技术其实愈来愈重要了,这就是机遇。
前端在面对 B 端专业用户形态的产品下每每能起到核心技术的做用,可是同时对前端的技能要求也会更高,互联网 c 端产品的红利期即将结束,前端的下半场即将到来,咱们能作的是什么?
深挖洞,广积粮,缓称王。