关于前端未来方向的思考

2019 已过去一半,前端社区关于前端未来发展的文章最近也多了起来。最近看到了阿里大佬谈未来前端的文章便也有了一些自己的思考,建议没有看过文章的小伙伴可以去看看。

阿里前端委员会主席圆心:未来前端的机会在哪里?

虽说正式从事前端时间不算很长,不过最早接触前端是在 2012 年左右,也就是上文的第二阶段末期。但从我个人的感受来看,那时的前端还是连带着切图的第一阶段。开局一个 div,配合 Sublime 项目直接开搞。浏览器兼容全靠手、js 引入顺序全靠脑。当时找工作的话,PS + jQuery + div 布局足以(如果切图好的话可能还是加分项),会用 ExtJs 的话,当时算是王者了。

photoShop jQuery

而之后的两年因为工作内容和前端关系不大,也就关心的较少了。等再次回归的时候,已经是 AngularReactVue 的“三国”时代了。要搞项目也是 Webpack 起手的工程化流程。浏览器的兼容也有了预处理器来搞定,切图也移给 UI 去做了,前端更多的是负责 JavaScript 的数据和交互处理以及基于 Node.js 的 BFF(Backend For FrontEnd)部分。

勉强地来说,我也算是经历过了前端发展早期阶段了。回过来看最大的一个感受就是前端开发正变得和后端开发越来越像。如今的 Webpack 起手就和当年在 eclipse 中新建一个 Java 工程,而 npm 就和 Maven、Gandle 一样。flux 式的数据管理模式中也能看到 MVC 的影子。

为什么前端会发展成现在这样呢?回顾一下历史,可以发现 Ajax 的成熟应用为前后端的分离埋下了伏笔。后端可以更关注于数据层面,把渲染和交互还给前端。SPA 或者说富应用的概念也就在这个时候出现了,而随着硬件和网络条件的发展,SPA 和富应用也逐渐变得可能。

前后端分离,也让软件的架构从 C/S 变为了 B/S。但软件的本质其实并没有变化。前端拿回的数据处理的部分正是后端所擅长的。于是 Backbone 这样的 MVC 框架就出现了。数据层的问题解决之后,还有另一个无法避免的问题,那就是 UI 的更新。传统的 DOM 操作在面对复杂项目时编写和维护就是开发者的噩梦,同时大量的 DOM 操作也会带来性能上的问题。于是 Virtual DOM 和 MVVM 的框架也就顺势出现了。只不过 MVVM 也不是前端发明的,最早是在微软的 WPF 上出现。

另一个推手就是 Node.js。Node.js 的出现让前端程序员没有门槛地编写前端需要的各种工具。模块化、预处理器、打包工具也随之出现。当然,一部分后端程序员把他们在后端的经验搬来也是有一定影响的。

再结合到业务上来说,现在前端的工程基本都是基于各种 cli 脚手架起步。除了注重交互的 C 端外,大部分的中台管理系统由于逻辑以 CRUD 为主,脚手架外加 UI 库就能很快搭建起来。那么这一部分也就很容易用工程化代替。中台系统的构建以及 CRUD 为主的系统将被简化。(小伙伴们有听说过阿里的飞冰吗?)

所以从这个角度来看的话,未来前端向“前”的会更向前,往“后”的会更往后。向“前”更注重交互,会模糊与 UI 之间的界限(或者干脆合并),这部分可能会需要 CSS 结合 UI 的艺术细胞(重 C 端);而向“后”则更靠近近后端,Node.js 为主的 BFF 层会是另一个方向(比如前端基础组建的搭建、工程化工具的开发和维护),这部分可能就需要扎实的基本功了。还有一个方向是图形学相关的技术(WebGL、Canvas),因为图形学受制于目前的硬件,在前端方面还相对较少,当然这一部分应该是需要扎实的数学功底了。虽然现在的一部分工作可能会被工具简化,但 IOT 和 AR/VR 技术的成熟也会进一步扩大前端的范围,只是用的语言是不是还是 JavaScript 就不知道了。

以上便是我个人对前端未来方向的一些思考,大部分还是从个人的角度出发,如有不足之处还欢迎交流指正。


关于前端未来方向的思考
https://konta9.github.io/2019/07/14/2019/关于前端未来方向的思考/
作者
Konata
发布于
2019年7月14日
许可协议