egg框架启动过程和核心入口(图解)

总括:启动过程的分析是找到总的入口文件:eggCore下的Loader是整个egg框架的入口

egg在koa框架之上进行了高度集成,进行了统一规范,在写项目的过程中,很难看出egg是怎样工作的。也就无法了解到egg的插件机制,扩展机制等是如何和koa集成。作为一名开发者仅仅掌握配置使用egg是远远不够的,本文就egg的启动过程进行了梳理,将egg的启动过程总结为一张流程图。

在egg启动过程中,主要是依赖egg-bin,egg-bin有依赖了common-bin,common-bin中又依赖了yargs,yargs-parser,有兴趣的可以自行去看yargs的文档,本文不做详细介绍。流程图如下:

简易流程:

从package.json可以看到执行npm tun dev会执行egg-bin dev

1,进到egg-bin中,会创建egg-bin实例,EggBIn实例继承自CommonBin实例,

2,接下来会执行CommonBin的load方法,将egg-bin中cmd文件夹下的启动文件放入CommonBin实例的[COMMAND](map集合)中

3,再根据命令行参数拿到对应的启动文件,执行启动文件的run方法,找到egg-cluster

4,执行egg-cluster的master方法,创建Master实例,开启App_worker子进程,Agent_worker子进程

5,App_worker子进程创建EggCore实例,并创建Loader,Lifecicle实例,Loader是egg把所有文件串起来的入口

 

详细流程图:里面有许多node的包,想研究的同学可以自行研究

 

egg框架启动过程和核心入口(图解)

总结:这里主要介绍了egg的启动过程,egg的核心加载流程后续介绍

参考:https://juejin.im/post/5be92cc95188251fd925d49b