不知从什么时候起,前端圈开始痴迷于框架技术选择的争论,从原来的新出的js库都要贬低下jquery,到如今Angular、Vue、React的站队,都仅仅围绕这些库或者框架进行前端技术讨论,连你去应聘也都问问你用过哪些框架或库,你说没听过或者没看过总会有些人带着蔑视的眼光嘲讽你一把。前端
确实,基于一些业务来讲,你仅仅是知道这些框架或库的应用就足够了,何须再动脑子去想其它的问题呢?jquery
说了那么多,其实我想基于我我的的经验聊下前端的演进和将来,但愿能够贡献微薄的力量,消除一些我我的认为的前端社区不太好的风气。编程
以史为鉴,想要知道前端的将来,必须知道前端的过去,抽象前端发展的规律。后端
前端的历史
前端的发展始终伴随着端的发展。前端工程化
PC 端的兴起
06 年左右国内互联网公司开始有了前端工程师的概念,缘由很简单,是由于上网访问网页的人数增多,大型互联网公司为了提高用户体验专门剥离了这样一个岗位来解决相关问题。这是第一批专业前端工程师的起源。浏览器
在这几年中的发展,进行了不少轮的技术方案、框架、浏览器的演进。好比 jQuery 兼容性库,再到 Require.js 异步加载,再到如今 React、Vue、Angular 等附带编程思想的前端库以及先后端分离、前端构建器、样式预处理器等。这些演进都是随着 PC 端的用户量的增多和业务复杂度的提高,为了用户体验和开发者体验而进化的。前端工程师
移动端的兴起
09 年左右,智能手机的兴起致使了移动端开发的热潮。人人拥有智能手机,这种特殊的端的特性,也产生了新的业务形态。所以无线前端相关需求开始爆发,无线前端开发、iOS/Android 工程师等需求量很是大。app
这几年中的发展,先从最初把 PC 端页面放在手机上渲染,再到出来响应式设计的概念,再到专门作无线端页面,再到独立客户端和 Weex、React Native 这些跨终端的方案。也是出现了很是多的技术演进,这些演进不难看出也是由于用户量的增多和业务复杂度的提高,为了用户体验和开发者体验而进行优化的。框架
PC 端的衰落
13 年左右,其实 PC 端颓废之势早已显现,但在双十一下被放大。阿里系前端在这个时间点附近就开始弱化 PC 端前端的投入。 之前 PC 端业务,在无线端流量更大的直接被下掉,核心链路的 PC 端业务能用就能够了,再也不作效果、功能迭代优化。甚至不少业务直接不作 PC 端只作无线端。业务指标也从 PC 的 PV、UV 变成了客户端的 DAU 等指标。前后端分离
在这个时间,只作 PC 端的前端,毫无无线端经验的前端,将会慢慢丧失竞争力。PC 兼容库 jQuery 之流也渐渐被替换废弃,由于 PC 的业务不多花费精力作兼容性测试,甚至目前咱们团队的业务历来都只测试最新版 Chrome。能够看到,随着端和业务形态的变化,不少前端演进的产物会逐步被替换废掉。
移动端的衰落
移动端目前尚未衰落,但一个端只要兴起,就会有衰落的时候。总会有新的、更好的、更高效的端来替代老的端,如今无法想象
前端的将来
回顾前端的历史,前端老是伴随的端的变化而变化:
端的出现 -> 业务场景的落地 -> 须要端的开发者 -> 端开发者学习、演进 -> 端的开发效率提高 -> 新的端出现 -> 端的没落 -> 端开发者转领域或者被淘汰
这也就是为何前端须要学习这么多东西,有这么庞大的体系的缘由。每个端都有它本身的特性。好比将来可能会火的 VR、AR 端,它们的特性就不一样于二维平面的移动端,掌握 VR、AR 端的开发就须要新学习不少三维图形图像以及图像识别领域的东西。
所以若是你想要知道前端的将来,你须要预测端的发展。但端的发展是很难预测的,回到 06 年,有谁会想到会有智能手机,并开创了移动端这个端?
而如今火热的 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 就是前端的所有,用熟了就能够一招走天下。但工做时间长了你才会发现 jQuery 只是知足了当时的业务需求,技术框架是随时会变的,不变的是特定业务的解决思想和方案。这个我认为才是非框架研发的前端须要探讨研究的更有价值的内容,好比针对无线页面跨页面跳转的状态本地存储方案、多页面无刷新的单页面路由方案等等。