egg 启动过程

本文详细记录了Egg框架的启动过程,从`egg-bin dev`命令开始,通过node调试,逐步解析EggBin类的继承结构,Command的初始化,加载不同命令模块如DevCommand,并最终执行forkNode创建子进程启动服务。通过对Egg源码的分析,有助于理解框架内部运行机制。
摘要由CSDN通过智能技术生成

前言:最近在写node后台,使用了egg,不了解框架的运行过程,更多的是在搬砖配置,心里没底!

今天翻出源代码,在此记录一下

启动命令行:egg-bin dev

为了看清运行过程,使用node调试:

进入项目运行 node --inspect-brk=6666  ./node_modules/egg-bin/bin/egg-bin.js dev 代码如下

// egg-bin/bin/egg-bin.js
const Command = require('..');new Command().start();复制代码

require('..')引入模块egg-bin/index.js EggBin

'use strict';
const path = require('path');
const Command = require('./lib/command');
class EggBin extends Command {
  constructor(rawArgv) { 
    super(rawArgv); 
    this.usage = 'Usage: egg-bin [command] [options]';   
    this.load(path.join(__dirname, 'lib/cmd'));
  }
}
module.exports = exports = EggBin;
exports.Command = Command;
exports.CovCommand = require('./lib/cmd/cov');
exports.DevCommand = require('./lib/cmd/dev');
exports.TestCommand = require('./lib/cmd/test');
exports.DebugCommand = require('./lib/cmd/debug');
exports.PkgfilesCommand = require('./lib/cmd/pkgfiles');复制代码

查看代码 EggBin extends Command,   Command继承Common-bin


接下来创建对象new Command().start();,先初始化顶级父类CommonBin,获取命令行参数dev

创建Map集合

class CommonBin {
  constructor(rawArgv) { 
   this.rawArgv = rawArgv || process.argv.slice(2);
   this.yargs = yargs(this.rawArgv);
   this.parserOptions = {
      execArgv: false,
      remov
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值