凡做事,必有方法。
一、前言
事情是这样的,最近公司新开了一个项目,前端组就两个人,我加上一个异地办公的同事,原本的技术栈用的是Vue
,因为中间多种因素新项目需要采用React
,而我是Vue
的重度使用者,对React
细节了解不多,也没怎么写过大型React
项目,刚好有这个契机用2
天时间带薪研究了一下,顺便分享这个过程我是如何上手的。
二、我认知中的React
在没研究之前,我对React
的认知停留在这几方面:
- 一个优秀的
MVVM
框架,在很多方面Vue
都借鉴了React
实现,例如虚拟DOM
、Reactivity
系统、组件Props
通信、单向数据流等 React
采用的是JSX
的语法来编写组件,而Vue
中使用的是.vue
单文件组件,但经过版本迭代也支持JSX
语法,毕竟它在灵活性上占有很大优势。React
推崇函数式编程,后续引入了hooks
受到社区和面试官的喜爱。- 引入了
fiber
架构,精确的对任务进行控制和调度,并且利用浏览器空闲时间执行任务队列。
有人会问,你难道之前都不想着学习一下吗?非得等到要用的时候才开始。
倒也不是,过去也有了解,但没有实际业务中落地实践,很多东西都忘了,所以我推崇优先在业务中学习就是这个原因。
好,基于上面的认知层面,接下来介绍一下我是如何学习的?
三、学习模板
在我认知内,凡做事,就一定有方法,这个方法就是一套模板,在遇到问题的时,用模板套上去就可以解决问题,而这种模板需要根据个人在实践中总结出来。
对于学习新技术领域,我用的是系统性学习模板
:
- 技术出现的背景、初衷是什么或者是解决什么样的实际问题?
- 技术的优势和劣势分别是什么?
- 技术的适用场景有哪些?
- 技术的组成部分和关键点:核心思想、核心板块。
- 技术的底层原理和关键实现。
- 行业已有方案(实现)和它之间的对比。
有了这个模板之后,接下来怎么做呢?
给自己提问题
围绕这个模板,我在翻阅React
资料之前给自己提了以下问题:
- 为什么这么多厂会采用
React
作为开发框架,它相比其他框架如Vue
具有哪些优劣势,适用于哪些场景?即使Vue
深受国内开发者喜爱 React
发展史是怎么样的,经历了哪些重大的升级迭代- 什么是
hooks
?它是为了解决什么问题而生? - 没有
hooks
之前状况又是怎么样的? - 常用的
hooks
有哪些?开发者又应该如何更好使用它? - 没有引入
fiber
之前,又是怎么样分配任务的呢?旧架构存在什么问题或瓶颈?fiber
又是如何解决这些问题?实现原理又是怎么样的? - 对比
Vue
,它是如何做状态管理和组件通信的?有哪些常用的方式 - 对比
Vuex
,Redux
的设计思想是怎么样的?react-redux
的作用是什么,充当着什么样的角色?
如何解决疑问
带着以上的问题,我又是通过什么方式去寻找答案呢?
答案是:官方文档
+ ChatGPT
。
官方文档是一手信息,是最原汁原味的,没有通过他人的解说和咀嚼,信息是最准确的,这个也是深度学习
的基础,就是信息的来源必须是一手。有了基础的认知之后,再去看网上的文章,对比别人是如何理解的,对于知识点的理解会更深。
但是有人会说,官方的话术太官方啦,压根看不懂,很多术语没法理解呀!
的确是的,所以我会使用AI工具作为辅助,来帮助我理解知识点,同时可以检索一些文档上没有的资讯,例如与其他框架的对比亦或者是发展史,能够高效解答我们的问题。
除此之外,很多朋友会采用视频教程等方式来学习,这的确是一个学习方法,特别是针对初学者,并且我在早期的时候也是通过这种方式,但不得不说花费的时间也多,而且效果不一定最好,看完之后就懒得敲了,所以我放弃了这种方式。
关于ChatGPT
使用,朋友们没办法注册账号的可以找我,本人还有一些余额在某平台上。
深入细节
搞懂以上问题之后,基本上对于React
有了整体的认识,加上对Vue
的熟悉度较高,接下来就很容易深入细节,随之会产生新的问题,比如:
React
的合成事件是什么?它解决了什么问题?有哪些合成事件?实现原理又是怎么样的?- 为什么总是听到副作用这个词?这个副作用指的是什么?如何处理副作用?什么场景下需要处理副作用?
- 那
Vue
里面又是如何处理这个副作用的? setState
是同步还是异步的?(面试高频)useState
是什么?为什么它返回的是一个数组,而不是对象?useEffect
用来处理副作用,为什么需要传一个依赖数组?它的执行时机是什么时候?无状态组件
中的无状态表示什么?相比有状态组件,它有什么优势?Vue
和React
在实现高阶组件上有什么区别?
好,以此类推,我就是通过这种方式不断深入细节的,了解完之后基本上可以直接上手写项目了,而且可以保证自己的代码质量。在此阶段,我顺便clone一份优秀的开源管理系统,一边看别人写的项目一边来弥补自己的盲区,效果非常可观。
总结
凡做事,必有方法。
具备这种思维方式应用在学习中非常高效,包括如何正确提问、如何与上级汇报等等,我都有一套模板,包括还应用日常生活中,比如如何与家人沟通等。
同时,很重要的一点,这种方式也非常适用于面试,可以快速扫清自己的知识盲点,我在求职期间也是用的这个方式,可以查看一年空窗期后我是如何准备面试的?这篇文章。
最后,文中提到了深度学习
这个关键词,后面有时间单独写一篇文章出来。同时,关于ChatGPT
工具以及更多思维模型学习交流,也可以加我私人联系方式followJavaScript
一起探讨,备注工具
或学习
。