不知不觉踏入前端这扇大门已是一年有余,也渐渐感觉到自己到了该职业发展的第一阶段末梢,这篇文章我想谈谈我入行后在我眼中的前端开发的第一阶段是什么样的。
前端职业的发展现状
首先一点,前端的发展非常迅速,快到什么程度呢?可能你今年还在苦修一门框架,结果第二年这个框架就被大环境淘汰了(指大部分公司前端的技术栈不使用这一种框架了), emm你要我举例子?backbone当年一出梭哈的大哥也不少,然而现在已经是angular、react、vue三分天下的局面了,并且这三个框架也在不停地迭代版本,比如我最早实习的时候,使用的就是angular框架,当时还是v1.0版本,结果当我开始第二次实习时,就已经出到v4.0了,当然如果只是新特性或者一些写法的改动可能还好,但是v4.0是彻底重写了以前的实现,相当于你又要重新耗费时间成本去掌握一门新的框架…
这种船新版本是最让人头秃的😵,即便是react、vue这种核心不变,渐进式更新版本的,你同样需要持续关注官方文档的博客是否有新的更新日志,就像react的ref
从最初的ref = 'xxx'
到ref = element => this.xxx = element
再到16.3
版本的createRef
API,以及新版本中推荐使用getDerivedStateFromProps
来替代componentWillReceiveProps
的场景,当然考虑到项目已经开发的一堆蛋疼场景的使用,可以通过UNSAFE_
前缀继续兼容…
前面我们只不过是讨论了前端在“前”领域的发展变化,然而现在js已经不再局限于web环境了,服务端环境有node,后端js的框架也是不断演变的,express、koa、koa2、nest、egg…移动端也从Hybrid APP切换到了RN的开发,哦,最近flutter也火起来了…还有小程序、图形、游戏等等领域,一言蔽之,当下正是前端百花齐放的时代,也是前端圈一个浮躁的时代。
所以作为前端开发者而言,你首先要给自己一个定位,你到底想往哪个分支发展,有人会说“我全都要”,也不是没有可能,但是你需要为此支付海量的时间,如果你是在没有工作负担的情况下,我觉得你不妨一试,但是这同时还需要不是一般的天赋才情和毅力;当然前面是我对“天才”的判断,实际情况是现在很多前端开发都是半路转职,或者刚从培训班跑出来憧憬着“高薪”的IT行业,并没有什么系统的知识储备,作为一个普通人开发者,大多数我相信还是做的实现业务逻辑的工作,也就是你需要紧跟前端发展的“潮流”,而紧跟潮流的基本条件是什么?我觉得是扎实的JavaScript基础,只有夯实的js功底可以让你从容地快速掌握新的框架或者技术,毕竟,底层是不会变的;框架的差异只不过是设计风格或者说侧重点。在你已经能很轻松地应付这些扑面而来的信息流后,你就可以选择一个你更喜欢的方向去深挖,只要你够持久…我相信最终当会有所成就。
曾经我以为的前端
还没毕业时,我想着说毕业做前端吧,那个时候完全就是觉得前端可以把脑海中的想要的效果呈现在页面上,有点像是设计师(可能自己有隐藏的设计师血统?)有点小cool,还为此沉迷了CSS一阵。后面开始去公司实习后,我发现真实情况就是如果不是那种重视交互性的公司,你对CSS的使用是很有限的,大部分都追求着快速实现“业务逻辑”,为此你要输出成吨的js代码,大部分样式都通过与react配合的antd
,与vue配合的elementUI
等类似的中后台样式解决方案cover了,你只需针对部分场景写一些定制的CSS就可以了…所以呢,现在市面上需求的前端工程师,已经不是远古版本的卑微切图崽了,而是精通js和各种主流框架使用的带哥;当然一些前文我提到的分支方向的钻研者如游戏、图形等门槛较高的JS开发者往往报酬会更高~
前端开发的第一阶段
前面多聊了聊我入坑的历史和对前端发展的认知,下面是我个人对前端开发第一阶段该具备哪些素质的概括:
① 扎实的JavaScript功底。
② 能够cover大部分场景的CSS能力。
③ 熟练使用框架,理解框架的设计思想,在正确的场景使用对应API,举一反三。
④ coding中考虑代码的性能以及日后的可维护性。
⑤ 抽象代码的能力,知道如何组装复用代码。
⑥ 熟练使用分支管理工具,回滚、解决冲突等基操。
⑦ 基本的工程化配置,webpack等等。
⑧ 基本的运维操作,Linux指令。
⑨ 紧跟社区技术发展,提升自身储备。
⑩ 知道如何“偷懒”:针对场景使用相应库提升开发效率。