经常有读者问我这问题,表示前端要学的实在太多了,然后给我列举了一大堆技术栈:什么三大框架、各种全家桶、小程序、umi、flutter、SSR、Node 等等,反正是把前端技术栈列举了一遍~
前端东西确实蛮多,但也没必要什么都想学。一旦你有这个想法,多半会像个无头苍蝇乱飞。这个看看,那个学点,到头来啥东西都没学好。
这样的例子其实我在读者里看到好些了,学习确实看起来是在学习,啥资料都收藏了,今天看会这个技术的视频,明天拿上另一个技术的书读起来,但是这种学习方式相当低效,另外啥资料都收集还会造成一个时间完全不够用的假象。如果没有一个学习的目标规划,只能事倍功半(可能连半都没有)。因为编程这个事情其中一部分就是靠大量的编码,如果你今天学这明天看那,没有大量的练习让你去训练自己到最后就是啥都不学不好。
先了解自己到底要什么
知道自己要什么是学习之前必须搞定的,否则就是无头苍蝇四处乱来了。
如果你真的没有什么思路的话,我这里推荐三个路子:
- 基础,反正无论什么场景下我都会推荐先学好基础,基础不好谈别的就是耍流氓
- 公司中用的或者将来要用的技术栈,觉得哪个还学的不好就先学哪个
- 看大公司的招聘要求(切记要看大公司的,因为大公司的要求不会是需要你学一大堆,只有小公司才会需要你这也会那也会),然后挑出要求中你还不熟练的开学
深度还是广度?
其实这个问题个人觉得没有绝对答案,两者各有好处。
挖掘深度有助于你成为一个领域中的专家,虽然绝大部分人是没有这个机会的啦,但是比一部分人我们肯定是做得到的,所以挖掘深度归结到底能帮助你成为行业内不那么容易淘汰的人。
挖掘广度有助于帮助你触类旁通,了解更多的概念等等,另外个人体感也会有学的越多就越快的感觉。当然这个挖掘广度不是前文说的那种啥都要去学的做法,而是在学习一个方向的时候顺带把有联系的内容也学上一点。
举个例子今天你打算开始学 Redux(React 的状态管理库),那么在学习 Redux 的过程中,你可以考虑顺带学习一下它的竞品对比 Redux 的优势缺陷是什么等等。这里需要注意的是没有让你把它的竞品也全部学一遍,而是了解竞品的优势及缺陷(这是广度),挖掘深度是好好学 Redux 直到能造出一样的轮子(这是挖掘深度到很后面了)。
建立知识体系
构建知识体系相当重要,否则不管你学到什么都是单独的一块知识,和其他内容不存在联系的话很容易忘记。
大家应该之前有在网上看到过前端知识脑图这类的东西,这个其实就算是一种次点(因为这种只是一个细分领域下的划分,没有和更多的细分领域产生联系)的知识体系,当然能先掌握它也是很棒的。
更好的方式是你学到的知识尽可能的要与别的知识连接起来,能与越多的知识联系起来越好。
举个例子今天面试官问了你一个理论知识,这时候如果你能先讲出理论知识,又能讲出有关联的理论知识,最后用工作中的实例去描述这个知识,这种就算是一个不错的知识体系实践。你既将这个理论知识与别的理论知识连接了起来,又能与实战中的例子产生关联。
那么我们该如何建立自己的知识体系呢?方法很简单:
- 把自己学到的知识用自己的话写成笔记
- 画脑图,把笔记浓缩到脑图中
- 学到新的知识重复一和二步骤,然后思考新学习到的内容是否可以与别的知识产生联系,能产生联系就用箭头双向连接起来
不要想着啥都学
文章开头列举的很多技术栈比如:flutter、SSR、umi 这些其实很多笔者也并不熟悉,但我不会老是想着我啥时候去学一下它们。
因为人的精力肯定是有限的,对于在工作中大概率用不到的东西我向来的策略是了解这个技术栈,读一下它的 Readme,知道它到底解决了什么问题就行,除此以外就不会再继续学习了,只有当我真的有需要这些技术栈的时候我才会去学习它们。
这个策略我也推荐大家可以用起来,因为真的没有必要超前很多去学习一门不知道什么时候才能用得到技术。前文笔者也说过编程是需要大量练习的,没有练习的话过段时间可能你就有点忘记了(反正笔者会这样),然后再过段时间这个技术可能更新迭代大版本了,那你学的东西可能还没用上就得重学了,有那时间打游戏不好嘛~