# 起因

前端技术日新月异,学的速度赶不上发展的速度。

学ES6遇到异步编程卡壳,webpack配置时报错,React的异步与传参不知道怎样组织,Redux让我怀疑人生,还有Angular、Node.js、Vue等没有接触过的框架。这些不算完,之前有《在 2016 年学 JavaScript 是一种什么样的体验》 (opens new window)引起热议,前几天Node.js作者@ry大佬推出新项目deno,引起了一些网友在Issues里疯狂吐槽"求不要更新了,老子学不动了 (opens new window)"。

前端三年,焦虑感最近时刻围绕着我,对未来的发展也是迷茫,我遇到了职业瓶颈。我学到什么样的程度才能对自己提升特别大?才能成为合格的前端工程师?

我试图去寻找一种能让我在21天精通前端的方法😬


tb1l5ffmxxxxxxaapxxxxxxxxxx-1501-789

其实我之前考虑的大部分都属于这幅图里的知识部分,快速发展的其实是知识,真正不变的是能力。

# 知识是能力的基石

下面是我认为成为一个合格的前端工程师需要掌握的知识

  • 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.

共勉


参考:

同时发表在
github (opens new window)

Last Updated: 9/24/2022, 8:12:56 AM