当前位置: 首页 > 科技观察

如何阅读框架源码_0

时间:2023-03-16 13:13:44 科技观察

无论Developer的水平如何,阅读源码都是一件非常有益的事情,尤其是对于初学者来说,可以快速吸收优秀框架代码的精华营养,快速成长。不幸的是,晦涩难懂的源代码很容易让人感到胆怯。今天分享给大家说说阅读源码的方法,希望对一些有兴趣阅读源码的朋友有所帮助。1.了解框架解决了什么问题。这不仅对阅读源码有帮助,对整个学习也有帮助。想一个问题:你之所以学Vue\React,除了他们如日中天,不学找工作都不好意思,是不是也夹杂了他们的一些优秀的特性可以给我带来某些好处?开发人员需要也应该了解流行的框架。雇主的需求当然是本能的驱动力。学习火没有错,但是在默默学习之前,需要加一层思考。与之前的技术体系相比,这个框架解决了什么问题,有什么优势,有目的的学习就不会迷茫。比如Vue\React***有什么优势?组件化,带着框架如何解决这个问题的问题去学习,一定会事半功倍。对于阅读源码来说,这一步就更加关键了。如果你不明白代码是做什么的,你怎么知道为什么要这样写呢?羊毛布?进一步细分,在仔细阅读模块的文件时,还应该对模块的功能有一个整体的把握。2.理解框架的设计思想尤为关键。我们看不懂源码(或者看起来很费劲),不是因为看不懂某个语法,而是看不懂作者的思路。举个简单的例子://这个方法可以得到point2顶角的弧度值functiongetAngle(point1,point2,point3){varbb=(point2.y-point1.y)*(point2.y-point1.y)+(point2.x-point1.x)*(point2.x-point1.x);varaa=(point3.y-point1.y)*(point3.y-point1.y)+(point3.x-point1.x)*(point3.x-point1.x);varcc=(point3.y-point2.y)*(point3.y-point2.y)+(point3.x-point2.x)*(point3.x-point2.x);varcosa=(bb+cc-aa)/(2*Math.sqrt(bb)*Math.sqrt(cc));返回Math.acos(cosa);}getAngle方法接收三个Coordinate参数,可以计算point2顶角的弧度值。如果不告诉你这个用到了三角形的余弦定理,恐怕你很久都看不出来它是怎么算出来的。那么我们可以通过哪些渠道来了解框架呢?设计思路:去框架官网看文档。开源框架,不管细节如何,这一定是黑客的权威资料。在网上搜索别人的分析和总结(源码分析不会少),大多数情况下,总会有大牛已经研究过了。站在巨人的肩膀上,可以省去很多麻烦。另外,设计思想是整个框架层面的。对于每一个实现细节,都会用到很多设计模式,比如函数式编程(Js中最常用)、单例模式、代理模式、工厂模式等,需要平时的积累。积累一定的代码量后,建议看一些设计模式方面的书籍,对自己的代码设计和阅读别人的源码都有很大的帮助。3.搭建调试环境,找出执行的主要上下文。我们在***节中提到,我们在细分各个模块的时候,要对模块的功能有一个整体的把握。如何实现这个“把握”?除了官方文档和网上的资料,最好的办法就是写一个简单的demo,搭建一个测试环境,加上一些调试信息,自然而然就明白了在生命周期的每一步需要调用哪个模块framework(用于目录结构清晰的优秀框架,有时可以凭直觉猜测,打印日志确认)4.区分主次框架。树需要那么多分支,时间又那么贵,阅读的策略很重要。我们的阅读路径应该以主流程为主(也就是树的主驱动,这样我们可以尽快到达顶点),对于一些小细节,我们可以在后面慢慢咀嚼(或者需要的时候))比如去阅读Vue的源码,有一个目录就是解析模板,生成语法树AST,最后生成RenderFunction。其实这一步最重要的就是RenderFunction生成的结果。对于如何解析模板和生成语法树,可以先放手,等需要的时候再回头看。否则很容易卡在某个点上,产生放弃的念头。5.坚持不放弃可以搜索资料,或者请大神请教,只要不放弃就可以~~