社区最近关于框架的争论,从互相发帖到粉丝排队再到大魔七球准备离职,令人唏嘘不已。不知从何而来,前端圈子逐渐变成了前端娱乐圈。越来越多的人开始站队Angular、Vue、React,只围绕这些库或框架讨论前端技术。这实在不是什么好现象。其实我想结合我个人的经历谈谈前端的演进和未来。希望能为消除前端社区一些我个人认为的不良风气贡献一点力量。注:以下仅为本人对前端和业务的个人理解和感悟,不代表任何其他人、本人所在公司或团队的观点。欢迎不同意见一起讨论。========以史为鉴,要想知道前端的未来,就必须了解前端的过去,抽象出前端发展的规律。前端的历史前端的发展总是伴随着端的发展。PC端的兴起2006年前后,国内的互联网公司开始有了前端工程师的概念。原因很简单。由于在互联网上访问网页的人数增加,大型互联网公司为了提高用户体验,剥离了这样的帖子来解决相关问题。这就是第一批专业前端工程师的发源地。在过去几年的发展中,技术方案、框架、浏览器都进行了多轮演进。比如jQuery兼容库,然后是Require.js异步加载,再到现在React、Vue、Angular等具有编程思想的前端库,前后端分离,前端构建器,样式预处理器等这些演进都是随着PC端用户数量的增加和业务复杂度的增加,为用户体验和开发者体验而演进的。移动终端的兴起2009年前后,智能手机的兴起带动了移动终端的发展热潮。每个人都拥有一部智能手机。这种特殊的端到端特性也创造了一种新的业务形态。因此无线前端相关的需求开始爆发,对无线前端开发和iOS/Android工程师的需求非常大。这几年的发展,从最初的手机端PC端渲染,到响应式设计的概念,再到专门的无线端页面,再到Weex、ReactNative等独立客户端和跨端方案。也有很多技术发展。不难看出,这些演进也是由于用户数量的增加和业务复杂度的增加,针对用户体验和开发者体验进行了优化。PC端的没落已经有14年了。其实PC端的颓势已经出现,只是在双十一之下被放大了。因此,阿里系前端围绕这个时间点开始削弱对PC前端的投入。以往PC端业务直接落在流量较大的无线端,核心链路PC端业务即可,效果和功能不再迭代优化。甚至很多商家不直接做PC端,只做无线端。业务指标也从PCPV和UV变为客户端DAU等指标。这时候只有PC端的前端,没有无线端的前端体验,就会逐渐失去竞争力。PC兼容库jQuery之流正在逐渐被替代和淘汰,因为PC业务很少花精力做兼容性测试,甚至我们团队的业务也从来没有只测试过最新版本的Chrome。可以看出,随着终端和业务形态的变化,很多前端进化产品会逐渐被替代和淘汰。移动终端的没落移动终端还没有没落,但只要有一个终端崛起,它就会衰落。总会有新的、更好的、更高效的终端来取代旧的。但时间是不可预测的。前端的未来回顾前端的历史,前端总是随着端的变化而变化:端的出现->业务场景的实现->需要的开发者端->端开发者的学习和进化->端开发效率的提升->端的新面貌->端的没落->端开发者转行或被淘汰。这就是为什么前端要学那么多东西,要有这么庞大的系统。每个端点都有自己的特点。例如,未来可能会流行的VR、AR终端,就具有不同于二次元移动终端的特点。掌握VR和AR终端的开发,需要学习大量3D图形和图像识别领域的新东西。所以要想知道前端的未来,就需要预测端的发展。但终端的发展很难预测。回到2006年,谁能想到会有智能手机,创造了移动终端?但目前火热的VR、AR端并不普及。您需要在特定的地方或佩戴相对较大的设备才能使用它。你可以用它给人做手术,给学生做第一眼演示,但你宁愿掏出手机看新闻,也不愿戴着VR蹲厕所。眼镜看。现有技术很难将其自然融入我们的生活。没有普适性和大量用户的终端,不会有太多的开发需求,主要是特定领域的终端开发者。如果这个末路死了,那么这个末路的开发者就什么都没有了。但下一个要干掉移动端的是什么?我们可能很难预测,只能顺应时代发展,快速学习,才能登顶。但是人的精力是有限的,每年都站在巨人的肩膀上轰轰烈烈的招生,你又能抗衡多少年呢?那么前端现在还能做什么呢?除了移动终端领域,既然未来的终端无法预测,那么现在和未来我们能做些什么呢?其实,在以上前端的历史发展中,其实隐藏着一条被忽略的前端线。我们回顾一下前端技术的迭代规律:端端技术之所以演进,本质上是因为业务复杂度的增加。例如,对于一个信息业务,最初显示一个信息列表和信息详情页面,然后可以完成简单的HTML。之后,他们在列表页和详情页中添加了很多元素,比如一些详情页增加了投票功能,一些详情页展示了问答和评论功能等。业务逻辑的复杂性导致需要技术演进,比如作为本咨询详情页的前后端分离、平台机制、前端组件化、异步加载模块渲染。不过这只是消费者端的前端,运营商端的前端已经被忽略了。某些类型的详情页显示投票,某些类型的详情页显示问答和评论,这些都是业务规则,需要运营商在运营后台进行操作和配置;前端组件化需要一个组件化的平台来管理和推送相关的组件等,隐藏的被忽略的前端线其实就是中后台的前端。简单的说就是整个业务环节的前端偏向于运营端的后台环节。随着前端业务复杂度的增加,后端操作的复杂度呈指数级增长。简单的前端交互已经难以满足运营的需求和效率。以前配置操作规则只需要提交一个表单,现在需要操作更复杂的表单,表单上的各种数据接口异步请求,联动变化。运营平台的建设和效率,在瞬息万变的互联网环境下,在某些情况下关系到公司的业务发展,可以预见这将成为前端需求的爆发点。与面向消费者的前端相比,中后端前端更稳定,通常只需要面向PC端。然而,需要基于复杂的业务场景抽象出通用的技术方案和产品,面临的挑战不小。阿里系前端是做什么的?阿里的业务体系非常庞大,很多业务非常深入。所以阿里系前端也会提前做一些技术储备,以满足业务发展的预期。包括早期的Node前后端分离,前端工程系统,Weex(weapp等)都是国内领先的,有足够的业务场景可以落地。因此,它通常可以作为前端领域的风向标。现在这个时间点,整个阿里集团的所有BU都有团队做中后端产品。据我所知,有四五套组件系统和五六套视觉构建系统。目前主导的组件系统有宇博旗下的开源产品ant-design和内部不开源跨BU协作的后起之秀Fusion。在淘宝端技术团队中,我们的ICE中后台技术产品,目前还没有开源,也是组内比较强大的中后台产品。经过一年的努力,我们已经基本建立了淘宝的中后台业务,并逐步辐射到菜鸟、盒马、搜索等BU的中后台业务。基于Fusion中后台系统,我们团队针对业务封装了大量技术方案,布局了可视化拖拽系统和前端人工智能,处于领先地位。同时我们有非常大的中后台业务场景淘宝商家后台和淘宝达人平台,是面向百万用户的中后台业务。这些都可以说明,中后台前端前端领域可能是未来会爆发的领域。该领域会立足于业务,助力业务,快速产生(如拖拽创建后台页面,特定领域解决方案)运营平台页面或内部产品,以应对复杂的业务逻辑变化。Angular、Vue、React框架上面的内容没有提到Angular、Vue、React,因为这些库或者框架都是基于现有的业务系统,技术方案是根据用户体验和开发者体验演进的,没有优势或劣势各有各的优势。在整个前端进化过程中,它只是一小部分内容。Angular有很多约束,擅长复杂的中后台场景和多人协作。Vue灵活,适合简单业务的快速迭代(当然中后台也用到Vue)。React的组件设计不错,可以实现更好的组件生态复用。对于这些框架,你只需要根据现有的业务系统和开发者经验,选择最佳的技术方案即可。在某些情况下,甚至jQuery也是更好的技术选择。随着端的变化,框架和技术方案会不断迭代。当新的端点或业务领域出现时,就会出现更合适的库或框架。那么Angular、Vue、React就会像我们现在对待jQuery一样被我们轻易取代。毕竟,一个公司赚钱是因为它的业务赚钱,而不是因为你使用了Vue或Angular等技术框架。哪个库或者框架适合你的业务形态,能给你带来稳定的系统和良好的用户体验,让你有高效的开发效率,你当然选择哪个。前端初学者很容易将框架视为整个前端。比如我几年前刚学过jQuery。我可以使用jQuery编写具有任何特效的前端页面。.但是工作久了,你会发现jQuery只是满足当时的业务需求。技术框架会随时变化,针对具体业务的解决思路和解决方案不变。我觉得这是非框架研发前端需要探讨和研究的比较有价值的内容,比如无线页面跨页面跳转的状态本地存储方案,多页面的单页面路由方案没有刷新,等等。
