关于前端学习的一些想法

2,819 阅读8分钟

本文是读:资深技术 Leader 曹乐:如何成为技术大牛 - 云+社区 - 腾讯云 (tencent.com) 有感

今年在掘金加了不少前端的公众号和交流群。混迹一年,总结一下,就是有(主)点(要)东(卖)西(课)。

当然也不能一杆子打倒,有一些群质量还是不错的,但是非常少。

掘金里面相当一部分up是在上面写文,然后引流到公众号,最后在公众号卖课。

对这些行为,个人虽然觉得不妥,但是也无可厚非。恰饭嘛,不寒碜。

只是吐槽一下能不能卖课的时候搞点正经的标题,我很好奇这些技术人员在公众号里挂着'react已死,vue3称王'的时候,真的不会尬一下么。

标题党,制造记录,水文,甚至灌输一些技术鸡汤,我认为这对学习者来讲,是不好的,尤其是可能刚入行不久的人。

我总结了掘金前端文章的一些流派:

  1. 茴香豆的茴有几种写法之用十二种库写出一个hello world级的demo

  2. 伊邪那美之术之 咿,怎么老是看到这篇文

  3. 面试官孔乙己之 听说你偷了掘友的书,经常被吊着打

  4. 天选之子之 99.9%的人都不知道但是我知道的XXX

  5. 美杜莎的凝视之看了就能进大厂因为能让面试官石乐志

  6. 致富指南之年薪XX万的前端总结

还有很多,不一一而举了

这些文章怎么说呢,不能说毫无价值,只是对于学习者而言,如果把自己的时间耗费在这上面的话,某种程度上是本末倒置的。 学习无非两端,一是为了深入研究,二是为了面试。 掘金的读者,应该是以初中级开发为主,否则'面试'系列不会如此火热。

对于初中级开发,我个人的看法,是这些文档可以当做咨询来看,能记住就记住,记不住就算了。在这个阶段,构建体系化的知识其实是更重要的。 前端的东西本来就多且杂,各种奇巧淫技层出不穷,往广度上学,累死也学不完的。 应当结合自己的技术栈和所处的业务方向,有选择的去学习。 掘金里确实有一部分人的文章写的很好的,但是不多,需要甄别。

前端的整个知识体系,淘宝出了一个非常全面的梳理。可以按图索骥,看一下自己处于哪个阶段,要掌握哪些东西。 前端知识图谱 (f2e.tech)

这个文档的好处是全面,但是没有重点。全面铺开的学的话,累死也学不完的。 如何找到重点?我个人有一些参考:

1.跟自己使用的频次有关。 不高频次的使用的话,学习的东西会学的很浅,也很容易忘掉。

2.偏内功类的。比如常用的算法,代码规范,软件工程,设计模式这些东西。不管你做什么开发,使用什么技术栈,这些都是用得到的。

3.自己感兴趣的。比如你对node感兴趣,就尽量在日常开发中主动承接一些node相关的业务,还是要在开发中锻炼和提升。

4.术业有专攻,心态要放好。不要看别人学rust,赶紧跟着去。别人写node,你也要跟上。你有你擅长的,别人有别人擅长的。

如何快速学习呢?

  1. 学习没有快速一说,只能说快速上手吧。 我个人的技术栈迁移的很多,有底层的C,高级的C#,到现在的JS和React。因为C的技术打的不错,所以迁移到其他技术栈的时候,都很简单,基本上都是上手就开始写了。然后边写边深入的学习。 在实际的工作中,很可能突然来了新的需求,就需要紧急换技术栈。比如我之前写vue的,面试新工作是react,上手也要干活,不可能说让老大等我一个月,学习学习再说。 其实语言层级的东西,都差不太多,只有一些语法上的大同小异。 一般官网都有教程和demo。按照demo走,在实践中学习,我个人的经验看,还是这种方式最快。 当然,如果你是个新手,看看b站视频,学习一下也是可以的。但是还是要上手,不上手个人感觉效果很差。

  2. 我一般面试的时候,会问对方是怎么学习的。由此作为候选人潜力的一个参考。

    我认为靠谱的学习还是系统性学习和主脉络的学习。 比如react的学习,你写的react代码是如何一步步在浏览器中渲染的,这是主脉络。 react分了哪些主要的模块,实现的基本原理,它的出现解决了什么问题,带来了什么问题。这是一个系统性的东西。其实有不少人,连react官方文档都没有从头到尾的读过。 系统性学习。我认为看书还是最好的模式,其次是一些整套的博客比如,react小书,自顶向下学习react源码等等。 这些课程在学习的时候,理解的同时,如果能够自己设想一些不同的场景,并进行验证,我认为达到这种程度,才算是学习了。 看视频课程我个人认为是一种低效的学习。因为市场上的视频课程的大多很初级。如果你是个编程老鸟了,建议还是从书本中学习。

  3. 深度学习和浅显的学习 了解一些新技术的原理,我认为是有用的。比如deno和node的区别,如何定制react渲染器,babel的编译原理,webpack和vite的实现原理,webgl和webGpu的区别等等。可以不用很细节,但是应该了解这些技术是解决了什么问题,可以用在什么场景下下。这种的,属于浅显学习。帮助拓展技术视野,但是不用投入很多的精力和时间去研究。 对于自己正在使用的技术栈,就需要深度的学习,可能深入到源码,深入到浏览器内核。这种学习是长期的。

  4. 源码的阅读 阅读源码其实非常难。 很多代码clone下来是没办法跑起来的。如果有人带着看最好,没有人带的话就要量力而行了。 学习源码是非常细节的东西。因此,学习之前你要对这个库的主体脉络清晰,大概知道它的工作流程,然后再代码中去看某一个节点的实现。我个人认为,不需要做到源码中的每一个变量,每一行代码都清楚原因。 如果对某个库没有深度的使用,没有主体的了解,上去贸然的读源码,是非常困难的,而且也难以体会到其精妙的设计。

  5. 有必要读源码么 大部分场景下,我认为读源码不是必要的。了解设计和原理是必要的,也足以应付面试。 有些人觉得,似乎学了XX源码就能拿到大厂offer。依我个人的体验来看,这似乎有点像:只要考了个研究生,就能进大厂一样。只要考个证,就能XXX之类的。这种观念某种程度上,是一种心理上的懒惰行为。 有这个时间和精力,做出一点东西更有价值,背书的价值也更高。会什么不重要,做出什么才重要。但是因为大家都是普通人,做不出什么,所以只好在面试的时候问原理卡人了。 当然,学习了源码,确实能帮你做出更复杂的东西来。 如果学有余力,我更推荐阅读linux内核设计与原理,或者计算机操作系统之类的书籍。没有什么能比操作系统的设计更加复杂和精妙了。

  6. 一些技术博客的推荐:

    1. medium是非常好的,如果英文不好,可以下载一个彩云小译的插件。
    2. 实现自己的reactqcsite.gatsbyjs.io/build-your-…(这个是中文版,原博是英文版的pomb.us/build-your-…。不知道这个同学是怎么做到跟英文网站一模一样的,难道是拿到了网站源码)
    3. React.js 小书 (hyf.js.org) redux部分的代码有点老了,但是总体思路还是很好的。
    4. 自顶向下学习react/掘金小册:React 进阶实践指南

    一些我认为比较靠谱的作者(他们的公众号不卖课)

    1. LucasHC 和他的好基友 颜海镜
    2. 我不是外星人 (react进阶确实很不错)
    3. 黄子毅
    4. HUX黄玄
    5. karminski牙医
    6. 寒雁
    7. 云谦