php网站源码怎么看框架_前端如何看框架源码-egg.js源码探索日志9

本文探讨了Egg.js框架的Loader模块,解释了路由加载、全局方法的访问方式以及Loader如何读取业务逻辑。文章指出,Loader通过动态require文件并注入全局实例,使得在规范目录下开发变得简单,同时也封装了集群处理的复杂性。最后,提到了服务启动点在Agent启动后的master中,并简要讨论了集群监听同一端口而避免端口冲突的机制。
摘要由CSDN通过智能技术生成

937c0a8e7e803a6e71290a48fbe36d0b.png

每天一小步,书接上回

拖鞋:前端如何看框架源码-egg.js源码探索日志8​zhuanlan.zhihu.com
69cd07123e25cad5c684a91dfeb5d28d.png

今天来到了,egg的最后一个核心模块Loader,这块代码我看了好久,至少比别的部分久,代码太多,也特别的绕,感觉无法用一篇文章来说明了可能需要个视频才行。

今天就着上次提出来的几个问题,来说,对直接说,就不贴代码了实在是又多又复杂。而且收益很低,这块偏底层了,实现方式也不一定用egg的模式,它为了考虑通用性,做了很多兼容代码,如果公司或者个人不做这种输出型的开源框架个人感觉没多大必要,先看看上回遗留的问题

第二,路由是如何加载进来的

第三,为什么项目里用this就可以获得想要使用的方法,而不用require

第四、loader是如何读取项目业务逻辑的

其实都是loader做了以上的工作,egg有众多的loader,原理其实很简单,就是动态require文件,注入到全局实例中,在全局用this可以取到,不过每个环节还是有一些细节上的偏差的,想细看的同学可以参考

7db00543fd3cbb25116e0753ba7dbba4.png

第五、最终服务的启动点,最后一个问题就是服务的启动点到底在哪

在agnent启动后,生命周期回回调 master 中 forkAppWorkers 这个方法来启动最终的业务逻辑,会使用 cfork 这个库 来启动集群

45e4445c35e7d249e00e10989a3accf3.png

这里有个小问题,集群启动时,所有子进程都在监听同一个端口,为什么没有端口被占用的问题呢?

总结,到此egg的完整启动流程就结束啦,其实看下来发现原理还是很简单,核心就两大块,eggcore和eggloader,前者用来控制流程 后者具体去加载对应文件,让使用者第一,需要在规范的目录里进行开发,限制文件夹的使用,封装了启动过程,无需在关心比较复杂的集群处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值