干货 | 一份我的前端技术进阶指南

近十年来,前端的发展势头迅猛,每年都会出现不少新的技术和标准。「If you are not growing,then you are dying.」这句名言对于前端工程师同样适用。维持现状就是落后的开始,不断地学习才是必修课。

话说回来,在时间和精力有限的情况下,那么多技术到底该怎么学?其实,技术的本质都是基础的设计模式和编程思想。只有把基础打好,学习新技术才不会吃力,达到「磨刀不误砍柴工」。

快速进阶的方法

首先,「开源项目」「造轮子」是我个人推荐的做法。

参与开源项目贡献的前提是你必须是项目的用户,并且在使用过程中遇到了问题。这样,你才有机会参与开源项目贡献。在遇到 bug 时不只提出 issue ,同时修改代码并且提交 pr,当 pr 被接受时,这个贡献才算完整。

为了达成这个目标,你不得不阅读这些项目的代码,作为此项目的用户,读清楚代码并且和业务相结合是最容易的,在这个过程中,吸收先进的写法和理念,提升会很快。在 pr 提交以后,会有项目成员 review 你的代码并给出修改意见,这是一个非常有意义的过程。那么问题来了,如何在现有的开源项目中找到一个 Bug ,又或者创建合理的特性呢?这还是需要一定功底的。所以说,参与开源项目贡献并不适合初学者提高技术能力。

下面说说造轮子。这也是不错的选择,但是,造出来的轮子很少会被使用在生产环境中,除非你的轮子真的独一无二 —— 因为对于一个项目来说,“稳”是排在第一位的。除了你的技术 Leader, 或许没有人会去关注项目中使用了哪些先进的技术和思想。

如果你的公司有基础建设部门,毫不犹豫的去那里吧,那就是造轮子的地方 —— 并且基本上都在使用原生技术,这里的每一个轮子都有可能变成开源项目。在这里,技术会得到大幅度提升。但是,如果本身技术一般,如何才能进入基础部门也是一个问题。那么就有了下面的内容。

初学者怎么办?

对于 Web 前端工程师来说,前端包含两点,即「呈现」「业务」

对于呈现,那主要是 HTML CSS 的事情,现在大家的浏览器在解析文档方面基本上已经没有太大区别了,所以现在的原生前端开发者很少去关注浏览器兼容的事情,在这里所要做的就是记忆,不要求记住所有,但起码要知道它们都有什么特性,在有需求的时候就不会太过于慌乱。

对于业务,这里主要使用的是 Javascript (ECMAScript) 。既然是编程,在掌握基本语法的基础上还需要了解数据结构、算法、设计模式以及常见的编程范式,这些都是「起高楼」的基本功。

我的建议是,能够简单使用原生语言实现业务后,再考虑使用框架和类库。因为我们知道了基础原理后,使用框架和类库的过程中你就会知道到底发生了什么,只有这样,在更换同类型框架或者类库时才能触类旁通。这一切的一切都源于基本功。所以,沉下心来修炼基础才是重中之重。

方法论

其实对于任何一门「技术」,不论是编程还是修理挖掘机,初学和进阶的模式都是一样的。

1. 先了解行业,掌握基础知识

了解编程是做什么的,数据结构,算法,设计模式,常见的编程范式,这些都是需要掌握的。虽然是老生常谈,但打好基础的确是进阶之路的重中之重

2. 小试牛刀

自己虚拟一个项目试一试,亲自玩一玩,从中必定会有所收获。

3. 上手实践

进入正式的项目,并且经历真正的项目磨练。

4. 总结经验

步骤3 和 步骤4 是循环的过程,当经验足够多时,就可以进行下一步骤了。

5. 传道、授业、解惑

当经验积攒到一定数量,别忘了进行「输出」,方式不设限,可以讲给别人听,也可以和同行进行交流。输出是巩固知识最有效的方式。写程序就是带徒弟做Leader,没事做做开源贡献,弄个开源项目玩玩。

6. 巨大的质疑和迷惑

了解了行业一切运转的规律,思考其原理和内核,提出问题。

「为什么要这样?」「怎么样才会更好?」

7. 创造者

到了这个阶段,所有的技术都要听你的了,当然,也是比较高的阶段。

对于编程者来说也许是制定新版本的语言标准?

与君共勉。

一个彩蛋

“道生一, 一生二, 二生三, 三生万物”

下面这个网站就是“一”

MDN Web Docs