对于很多从事前端这个行业的小伙伴来说,每天的工作就是接需求,实现功能,切页面。这就导致很多人对前端的认识也仅仅停留在开发功能的层次,然而,事实真的是这样吗?
纵观这几年web的发展,从最开始的原生js到jquery,再到现在流行的各种mvc,mvvm的框架,web开发经历了从最简单的page,到现在application的进化。这种进化客观上就对web开发人员提出了更高的要求,web工程师不仅仅需要局部开发能力,还需要具备工程能力。
说到工程能力就不得不提软件工程,现在web的开发的高度已经上升到了软件工程的高度,而对于软件工程的来说,有三大块内容是必须知道的:
开发,测试和监控
开发功能对很多人来说是轻松活儿,基本的前端语言加些复杂的特效,实现成本不会很高;即便是搭建一个网站,使用 Node.js 社区中的框架也能够轻松实现。然后极少人会去关注每个功能点的测试,一个项目下来基本看不到测试用例,更不用说会去做监控相关的事情。结果就是,踏过了无数的坑洼之后终于上线了,而后续加功能的时候发现,加了东西就跑不通,新内容影响了之前的逻辑,只好去修复之前的逻辑,修好之后发现更早之前的逻辑又不通了,整个修复过程就像玩多米诺骨牌。
在 github 上可以看到很多程序都加入了持续集成,这是一个好兆头,意味着我们写的程序也越来越健壮,至少贡献给世人使用的程序是健壮的。很多程序的代码覆盖率也达到了 90%+,这些数据都是重视测试的证据。
然而,三辆马车,我们最后一辆依然没有开动起来。很多公司都会有自己的 log 平台,每个用户访问页面中的任何一个链接都会将用户信息和访问信息以 log 日志形式收集到 log 平台上,然后通过监控平台或者离线分析的方式,获取业务数据或者技术数据,进行分析和二次开发。这些东西在大公司见的很多,而这方面的东西在前端,尤其是使用 Node.js 做程序开发的前端身上,看到的并不多。
我刚接触前端的时候,Web 技术栈往小里说,包含了从前端设计、交互、前端实现、网络数据传输、后端实现、后端运维和数据库等几个方面,能短时间内从无到有实现这么一套系统,并且能够抗得住一定流量冲击的人,我们可以称之为全栈工程师。能够有架构有条理地实现这套系统,并且抗得住大流量、有集成测试、有监控的,这种我们可以称之为资深全栈工程师。现在不乏这种人才,也不乏自吹为这种人。
栈的融合得益于 Node.js 的出现,作为前后端分离的桥梁,它拉近了前端工程师与后端的距离,有的人在这座桥梁上卖力行走,渐渐的也从前端走进 了后端,甚至走进了后端的运维。至此,前端也拥有了部署和发布整个应用的能力,这是一个质的突破
现在,各种新框架,新技术层出不穷,许多人已经被这些新技术冲击的找不到前进的方向了,或许,是时候休息一下,好好想一想如何将极致的性能和极致的体验带给用户,这才是开发的终极目标吧。