写文章不容易,点个赞呗兄弟
专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧
研究基于 Vue 版本 【2.5.17】
如果你觉得排版难看,请点击 下面链接 或者 拉到 下面 关注公众号 也可以吧
【Vue 原理】Vue 源码阅读总结大会 – 终
终于啊终于啊,把 Vue 系列的文章发完了了,如释重负的感 jio 啊,今天就打算总结下,我这段时间来的历程和收获,本文纯吹水,没有技术含量,各位客官权当娱乐消遣也无谓,来收集个表情包也是可以的
学习源码用时
花了 3 个多月读源码,花了六个月 写文章,花了九个月发文章
耗时如下
从 2018 – 9 – 10 开始读源码
然后从 2018 – 12 – 5 开始写文章
然后 2019 – 6 – 2 写完所有文章
然后 2019 – 8 – 19 发完所有文章(也就是今天)
我不是写了就马上发的,我写完一篇文章之后,要等一段时间之后,再重新审核一遍再发送,这样一来,既可以发现遗漏的错误,也可能可以收获不同的心得
你以为这时间算长的了吗??
其实如果只用晚上下班回去的时间写的话 …… 写文章估计得用一年 …… 我不仅内容追求简单,可以让我们在以后忘记的时候迅速捡回来,我还要追求排版好看(鳖跟我说难看好不喽,我花了很多心思的哈哈),因为我知道排版难看的文章一秒都不想爱看下去 ….
然后我为什么只用半年呢,我 ….. 不好说 …. 哈哈哈
不过也算很长了,历时这么长,真的是非常难熬的,在 坚持和 放弃中 摇摆不定,57 篇文章真不是搞笑的啊,差点崩溃了
幸好给自己定的奖励,一路撑着我走到现在
比如写完这个系列,我打算给自己买双鞋子 …..
咳咳,回到正题
阅读源码不难,难的是深度阅读源码
怎么深度阅读呢,就是自己先提前想好一堆问题,然后去源码中找答案,不然一堆源码摆在面前,是会懵逼的
而且当你发现你要解决一个问题的时候,通常你要先解决七八个问题,并且你会碰到好多盲区知识点,这就是最烦的地方
而写文章是烦上加烦了,我不能囫囵吞枣啊,涉及的盲区知识统统都要去了解,所有附加的问题也统统要解决,因为你要更加详细的了解他的流程 并且 理解,没得办法的啊
不要觉得边看源码然后随便记个笔记就可以了,笔记是应付自己的,你觉得你会花多少精力去弄?
反正我觉得自己看源码时做的笔记,都没能怎么帮助我写文章,因为偷懒没怎么用心去写
所以更加坚定了我写文章的信念,特么的,写的笔记都不想看,我特么时间不是白花了吗,源码不是白看了吗
我是怎么读源码
我看源码测试,都是直接看一整个开发版的 Vue 文件,而我看网上很多人都是选择看 Github 上 Vue 功能分类好的文件夹
我个人不太喜欢这样,虽然每个文件都相比一整个文件简短不少,功能分类好,但是文件太多,会徒增我的疲惫感和厌烦感
我直接看一个整个文件,直接 script 引入,有一种爬高山的感觉。直接征服一万多行的代码,爽得黑文
像上面那种,就是像爬很多座小山,个人感觉会累很多,有点烦
而且这样方便我进行调试,相关内容可以看看
【Vue 原理】学会调试 Vue 源码
学习感悟
都不知道写文章有多烦,耗费的时间和精力不是一般的多,比看源码还要多
有时看源码,基本弄懂一个流程就行了,根本不会细致到每一个细节
因为要写文章,我必须精细到每一个细节,完整走一遍流程,生怕自己写的东西不够严谨(虽然可能也会有瑕疵)
有时明明已经写到吐了,还是坚持完成目标,这真的是一个恶心的过程啊喂。
有时真的想想这样好烦啊,但是,我坚定一个信念
越使我烦躁的东西,越能使我强大
简单的东西,大家都会,凭什么你能更加优秀
难的东西,大家都不会,凭什么你能更加优秀
那我想更加优秀,我就只能从烦入手了,因为烦躁本身就已经帮我筛选过滤了一部分人
那么只要我突破他,那我就可以领先这部分人
因为本来就不是什么很厉害的人,普普通通的程序猴子
你要做的就是去跨越那些烦躁的东西
难的东西你不行,烦躁的东西你还不肯去弄,你竞争个毛啊竞,翻去执牛屎了
这种烦躁的情绪在 写 compile 的时候特别严重,因为 compile 的源码实在 是太多了,虽然已经是看过一遍并做了笔记,才来写的文章,仍然刚到很吃力,非常吃力
compile 的每一篇文章,大概都花几天的才写完的,最长的可能一个星期,并且在发之前还要审核一天以确保正确性,而 compile 有多少篇文章呢?
嗯,有 9 篇,真的是倾注心血的,我觉得不会辜负看过的人
你问我为什么要分享
1、自己的想法难免有限,肯定会有漏掉的错误,别人可以发现指正你
2、分享自己的成果。一个人不停变好的人,也一定可以让别人一起变好
学习收获
读源码,个人感觉有什么好处呢,简单罗列几点把
1、懂得很多项目细节的处理方法,比如对象合并,比如清空数组
2、更加熟悉这个框架,可以解决遇到的奇怪问题而不会干着急(比如之前碰到的 computed 缓存)
3、学到很多新知识点(MessageChannel,shadow dom)
4、可以让你重新认识旧知识(宏微任务)
5、怎么写出规范又好维护的代码
6、可以看懂别人打包后的代码(笑哭)
7、项目有些问题的处理思路,比如在 Diff 中有个函数,学会了怎么在两个数组中,匹配是否有相同项
在 Vue 源码分享大会的开始,我们也有说过,可以看下
【Vue 原理】Vue 源码阅读总结大会 – 序
最后
我很害怕自己会写错东西,所以一直很小心翼翼地检查文章,写出一篇文章我不会马上发表,而是等过一段时间再审查一遍,看是否有不通畅,不正确的地方
只能说我的能力有限吧,还是会难以避免地可能存在的错误
看了文章的童鞋,希望能对你们有所帮助
有错误的地方,也请勇于指出,我非常希望有人纠正我哈哈,我会有重酬的!
Vue 系列写完之后,后面可能会更新一些 Vue 的番外篇,比如源码中的一些小功能,但是现在估计会断更一段时间,接着后面会发腾讯前端进阶课程的心得