# 起因
前端技术日新月异,学的速度赶不上发展的速度。
学ES6遇到异步编程卡壳,webpack配置时报错,React的异步与传参不知道怎样组织,Redux让我怀疑人生,还有Angular、Node.js、Vue等没有接触过的框架。这些不算完,之前有《在 2016 年学 JavaScript 是一种什么样的体验》 (opens new window)引起热议,前几天Node.js作者@ry大佬推出新项目deno,引起了一些网友在Issues里疯狂吐槽"求不要更新了,老子学不动了 (opens new window)"。
前端三年,焦虑感最近时刻围绕着我,对未来的发展也是迷茫,我遇到了职业瓶颈。我学到什么样的程度才能对自己提升特别大?才能成为合格的前端工程师?
我试图去寻找一种能让我在21天精通前端的方法😬

其实我之前考虑的大部分都属于这幅图里的知识部分,快速发展的其实是知识,真正不变的是能力。
# 知识是能力的基石
下面是我认为成为一个合格的前端工程师需要掌握的知识
- ECMAScript
- DOM(BOM) API
- CSS生态
- HTTP
- 浏览器渲染原理
- React全家桶
- 一门后端语言(Python)
- 数据结构与算法
- 测试
- 打包工具
# 能力是对技术的应用
下面是我认为成为一个合格的前端工程师需要掌握的能力
编程能力:对业务的抽象能力,代码少BUG、易读、易扩展
学习能力:相对较短时间内能学习一个框架(库、组件)并应用到实际项目中;持续学习知识。
架构能力:最恰当的技术选型,易扩展,易维护
工程能力:项目进度把控,模块化,代码质量,代码风格,版本控制
沟通能力:准确理解业务逻辑,找出潜在问题,提出解决方案
# 那么如何掌握知识提高能力呢?
# 与工作结合
对于知识,我想尽量与工作项目结合。比如现在的一个项目中用到了dva+ant design,包含的知识太多了:ES6、React、Redux、React Router、webpack、Less等等,以及这些组件的实现原理,框架的实现原理。
# 建立联系
把前端看作一个知识树,先搭建起骨架,每学一个新知识都是树的枝叶。
清楚各枝叶间的联系
# 带着问题去学习知识
比如我看到知道现在前端模块化有三种方案:AMD、require、import。他们之间的区别与应用场景是什么?实现原理?这样效果要比直接阅读ES6文档好。
具体到实施:整理一个问题列表
# 专项突破
比如垂直居中,在不系统的情况下,我只会line-height这一种方法,而有些更优雅(line-height并不是完全垂直居中)的方案能解决垂直居中。这就要专项突破一下。
具体到实施:在建立联系的知识树中加入需要专项突破的内容
# 帮助别人
知识或工作的局限性,可能永远接触不到某些特定场景下的特殊问题,帮助别人能开阔知识面,能提升自己语言组织能力。
具体到实施:去问答网站回答别人的问题。
# 阅读源码
现阶段还没有能力参与开源项目,但可以阅读开源项目。阅读开源代码能知道一个成熟的项目应该有的东西。能深入思考在解决特定问题时作者是如何抽象化问题,如何组织代码,如何将其工程化。
阅读源码要有针对性,是学习开源框架的代码组织还是某个技术点的具体实现,需要带着特定目的或特定问题去阅读。
# 记录
记录某个问题的需求,如何抽象为逻辑与状态,如何组织代码。
记录这个模块(功能)需要优化的点在哪里。
记录遇到的坑,如何避免。
记录对项目的思考。
...
# 思维能力
拿到需求将其分解为逻辑与状态,将逻辑与状态抽象为算法与数据
# 造轮子
轮子要小而精,最好能长期迭代
# 如何实施
然后我会针对当前阶段做一个一个需要的本阶段如何实施规划列表,排上优先级。有计划有目的的去完成工作和进行学习。
You are the owner of your career.
共勉
参考: