最近在《极客时间》上购买了 Winter 老师的重学前端这门课程,从新对本身的前端知识作一次查漏和补缺。(Winter 老师是谁?能够查看这里)在课程的开篇,Winter 老师提出了一种学习的方法:创建知识体系 以及 追根溯源。前端
创建知识体系相信你们都有本身的理解。特别是在前端这个知识点又多有分散的圈子里面更是如此。一幅知识体系的导图会不会让人在学习中迷失方向,固然这么庞大还在不断扩张的导图也会劝退很多人。git
2015-2016 年的知识体系(引用自:WEB前端知识体系脑图 ) github
而追根溯源的方法我的感受则更为重要。所谓追根溯源,便是寻找一个技术的源头、发明的背景、解决的问题以及发展的历史。毕竟计算机是一门解决实际问题的学科,当中用到的知识和解决问题的方法都是有据可循的。若是能经过追根溯源了解一个技术被发明的缘由以及演变的历史,对咱们理解和掌握这个技术都会有巨大的帮助。面试
以前在和小伙伴的交流中,小伙伴也有提出过这一学习方法。因而我本身也在复习对象和原型链的时候刻意尝试了一下并写了两篇笔记。算法
发现这样作确实对本身的理解有帮助,在反推了一下几种模式的演变以及解决的问题以后,发现这几种模式也更容易记住了(只要记住一两种剩下的就能够推出来)。在加入新公司以后,有幸作过一次 JavaScript 基础的技术分享,查了一下 JavaScript 这门语言发明的缘由以及 ECMAScript 的变化过程,对以前不注意的坑又有了一个新的认识。可能这就是“知其因此然”的力量吧。编程
追根溯源的学习方法,虽然在学习的过程当中会多花费一些精力在查找资料和本身动手推演的过程,可是一旦把一个知识点从源头“串”起来的话,那么这个知识点上的大多数问题都再也不会是问题了,而与之相关的知识点也能举一反三。浏览器
这一点在以前帮人面试前端的时候也有一些体会。一些年轻的面试者由于“生于” MVVM 的时代,对于操做 DOM 进行前端开发的“石器时代”并不了解。天然也就不熟悉最基本的 DOM 操做了。一样地,还有前端模块化的变迁。若是没有了解过引用 script
标签须要讲究顺序的时代,可能对模块化、做用域隔离等的理解就未必深入。而这些若是是从 JQuery 时代过来的前端开发者或者是了解过这段历史的开发者的话,应该会理解起来很是方便(前提是有不断的思考和学习)。数据结构
固然,对“源头”不熟悉并不会影响咱们平常开发。但只要想在前端方面深刻,那么 DOM 操做、浏览器原理是天然逃不掉的。那么届时,就会对咱们自身的提升带来阻碍。由于不管咱们如今的框架有多么便利、打包工具备多么的方便,咱们真正跑在浏览器上的仍然是“石器时代”的那些东西。框架
前端是如此,那么推演到编程这门学科上,天然即是数据结构与算法甚至是更底层的原理了。“想要技术上获得提升,就必需要了解计算机原理”这样的话相信只要是开发者就必定听过,我想这背后所说的就是要去追根溯源,把知识点“串”起来。若是咱们能够以本身的方式,推演一遍的话,相信大部分的知识点确定就能确实掌握了。正如老子在《道德经》中有说,“有道无术,术尚可求。有术无道,止于术。”模块化