你好,我是winter。今天我们一起来聊聊前端的学习路线与方法。 在“开篇词”中,我和你简单回顾了前端行业的发展,到现在为止,前端工程师已经成为研发体系中的重要岗位之一。可是,与此相对的是,我发现极少或者几乎没有大学的计算机专业愿意开设前端课程,更没有系统性的教学方案出现。大部分前端工程师的知识,其实都是来自于实践和工作中零散的学习。 这样的现状就引发了一系列的问题。 **首先是前端的基础知识**,常常有一些工作多年的工程师,在看到一些我认为很基础的JavaScript语法的时候,还会惊呼“居然可以这样”。是的,基础知识的欠缺会让你束手束脚,更限制你解决问题的思路。 **其次,技术上存在短板,就会导致前端开发者的上升通道不甚顺畅。**特别是一些小公司的程序员,只能靠自己摸索,这样就很容易陷入重复性劳动的陷阱,最终耽误自己的职业发展。 **除此之外,前端工程师也会面临技术发展问题带来的挑战。**前端社区高度活跃,前端标准也在快速更新,这样蓬勃发展对技术来说无疑是好事,但是副作用也显而易见,它使得前端工程师的学习压力变得很大。 我们就拿JavaScript标准来说,ES6中引入的新特性超过了过去十年的总和,新特性带来的实践就更多了,仅仅是一个Proxy特性的引入,就支持了VueJS从2.0到3.0的内核原理完全升级。 缺少系统教育+技术快速革新,在这样的大环境下,前端工程师保持自学能力就显得尤其重要了。 那么,前端究竟应该怎么学呢?我想,我可以简单分享一下自己的经验。 ## 学习路径与学习方法 首先是**0基础入门**的同学,你可以读几本经典的前端教材,比如《JavaScript高级程序设计》《精通CSS》等书籍,去阅读一些参考性质的网站也是不错的选项,比如[MDN](https://developer.mozilla.org)。 如果你至少已经**有了1年以上的工作经验**,希望在技术上有一定突破,那么,这个专栏就可以是你技术进阶的一个选项了。 在这个专栏中,我希望传达的不仅仅是具体的知识点,还有体系架构和学习方法。我希望达到三个目标: - 带你摸索出适合自己的前端学习方法; - 帮助你建立起前端技术的知识架构; - 让你理解前端技术背后的核心思想。 在开始具体的知识讲解之前,这篇文章中,我想先来谈两个前端学习方法。 ## 第一个方法:建立知识架构 第一个方法是建立自己的知识架构,并且在这个架构上,不断地进行优化。 我们先来讲讲什么叫做知识架构?我们可以把它理解为知识的“目录”或者索引,**它能够帮助我们把零散的知识组织起来,也能够帮助我们发现一些知识上的盲区。** 当然,知识的架构是有优劣之分的,最重要的就是逻辑性和完备性。 我们来思考一个问题,如果我们要给JavaScript知识做一个顶层目录,该怎么做呢? 如果我们把一些特别流行的术语和问题,拼凑起来,可能会变成这样: - 类型转换; - this指针; - 闭包; - 作用域链; - 原型链; - …… 这其实不是我们想要的结果,因为这些知识点之间,没有任何逻辑关系。它们既不是并列关系,又不是递进关系,合在一起,也就没有任何意义。这样的知识架构,无法帮助我们去发现问题和理解问题。 如果让我来做,我会这样划分: - 文法 - 语义 - 运行时 为什么这样分呢,因为对于任何计算机语言来说,必定是“用规定的文法,去表达特定语义,最终操作运行时的”一个过程。 这样,JavaScript的任何知识都不会出现在这个范围之外,这是知识架构的完备性。我们再往下细分一个层级,就变成了这个样子:
  • 文法