@eggjs/core

中文文档
7.1.0发布于 2026/10/07MITTypeScriptES Module构建来源已验证近 30 天下载 6312

基于 @eggjs/koa 的核心插件框架

中文使用文档
文档目录13 节
  1. 使用量
  2. 鸡蛋记录器
  3. 构造器
  4. 高级APIs
  5. 低级 API
  6. 装入器选项
  7. 时间安排
  8. 开始
  9. 结束
  10. 给杰森
  11. 问题和建议
  12. 许可证
  13. 贡献者

@eggjs/ 分数

NPM version Known Vulnerabilities npm download Node.js Version

基于核心插件框架 @eggjs/koa (英语)。 。 。 . 共同用途和无害环境管理 hy。 。 。 .

别直接用,你看 鸡蛋。 。 。 .

使用量

目录结构

├── package.json
├── app.ts (optional)
├── agent.ts (optional)
├── app
|   ├── router.ts
│   ├── controller
│   │   └── home.ts
|   ├── extend (optional)
│   |   ├── helper.ts (optional)
│   |   ├── filter.ts (optional)
│   |   ├── request.ts (optional)
│   |   ├── response.ts (optional)
│   |   ├── context.ts (optional)
│   |   ├── application.ts (optional)
│   |   └── agent.ts (optional)
│   ├── service (optional)
│   ├── middleware (optional)
│   │   └── response_time.ts
│   └── view (optional)
|       ├── layout.html
│       └── home.html
├── config
|   ├── config.default.ts
│   ├── config.prod.ts
|   ├── config.test.ts (optional)
|   ├── config.local.ts (optional)
|   ├── config.unittest.ts (optional)
│   └── plugin.ts

然后从下面的代码开始

import { EggCore as Application } from '@eggjs/core';

const app = new Application({
  baseDir: '/path/to/app',
});
app.ready(() => {
  app.listen(3000);
});

鸡蛋记录器

EggLoader 可以轻松地在您的文件中加载文件或目录 鸡蛋 项目. 此外,还可以自定义低等API的加载器.

构造器

  • {String} BaseDir - 当前应用程序目录
  • {Object} app - 彩蛋应用实例
  • {Object} 插件 - 合并插件进行测试
  • {logger} 日志 - 日志实例, 默认为控制台

高级APIs

自动加载

装入配置/ 插件. ts

aync 负载配置

装入配置/ 配置. ts 和配置/ { serverEnv}. ts

若为 process.env.EGG_APP_CONFIG 已存在,然后将解析并覆盖配置.

自动加载控制器

装入应用程序/控制器

async 负载中间软件

装入应用程序/中件

代理负载应用

装入应用程序/扩展/应用程序.ts

async load 文本扩展

装入app/extend/context.ts

请求删除

装入应用/扩展/请求.ts

async 负载响应扩展

装入应用/扩展/响应.ts

async 加载帮助扩展

装入app/extend/ helper.ts

async 负载 CustomApp

装入app.ts,如果app.ts导出启动类,则触发配置DidLoad

自动加载

装入代理.ts,如果代理.ts导出启动类,则触发配置DidLoad

代理负载服务

装入应用/服务

低级 API

获取ServerEnv ()

通过 serverEnv。 。 。 . 您可以通过电话直接访问 this.serverEnv 即时反应后.

服务器 Env说明
默认默认环境
测试系统集成测试环境
音标生产环境
当地本地环境在您的计算机上
单位测试单元测试环境

获取数据( )

获取框架目录 。 新的框架通过延伸蛋, 然后可以使用此函数来获取所有框架.

获取损失单位( C)

负载Unit是一个可以被 EggLoader 装入的目录,因为它具有相同的结构.

此函数将获得添加负载 Units 遵循顺序 :

  1. 插件
  2. 框架
  3. 应用

加载单元有一个路径和一个类型。 类型必须是其中之一: 应用, (中文(简体) ), 框架, (中文(简体) ), 插件。 。 。 .

{
  path: 'path/to/application',
  type: 'app'
}

获取 Appname ()

获取应用程序名称 软件包.json

应用程序信息

获取应用程序的信息

  • pkg: (英语) package.json
  • 名称: 来自 package.json
  • baseDir: 当前应用程序目录
  • env: 等于服务器 Env
  • Home: OS的主目录
  • root: 本地和单位测试时的基准定义, 其他环境时的基准定义

async 加载文件( 文件路径)

要装入一个文件 . 说明: 文件必须导出为函数 .

aync loadToApp(目录、属性、加载器选项)

从应用程序中的目录中装入文件 .

调用 this.loadToApp('$baseDir/app/controller', 'controller'),然后你可以使用它通过 app.controller。 。 。 .

aync 负载ToContext(目录、属性、加载器选项)

要从目录中装入文件, 它会被绑定上下文 .

// define service in app/service/query.ts
export default class Query {
  constructor(ctx: Context) {
    super(ctx);
    // get the ctx
  }

  async get() {}
}

// use the service in app/controller/home.ts
export default async (ctx: Context) => {
  ctx.body = await ctx.service.query.get();
};

async 加载Extend( 名称, 目标)

装入器app/extend/xx.ts到目标,例如,

await this.loadExtend('application', app);

装入器选项

* 帕拉姆 * 类型 * 说明 * * * |--------------------------------------------------------------- ---------------------------------------- --- --------- ------- --------- -- -- - -- - -- -- - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - qq 目录 qq String/Array 要装入的目录 {} 目标 Object qq 从已装入的文件附加目标对象qq {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}对吗 String/Array 装入时匹配文件, 默认为 **/*.js(如果进程.env.EGG*TYPESCRIPT是真实的,默认为 [ '\*\*/\_.(js | ts)', '!\*_/_.d.ts' ]) (中文(简体) ) {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}不理会 String/Array qq 装入时忽略文件qq 开始器 Function xq自定义文件导出, 接收两个参数, 第一个是注入对象( 如果不是 js 文件, 将是内容缓冲), 第二个是 an options 包含对象 path | 案件史蒂尔 String/Function qq 在将文件路径转换为属性列表时设置属性大小写 。 | qq 覆盖qq Boolean 确定是否在获得同名时覆盖属性 打电话 Boolean 确定当出口为函数时是否引用 {} 注射量为: Object qq 函数引用时作为参数的对象qq 过滤器 Function qq 函数过滤可以装入的导出qq

时间安排

EggCore 记录启动进度 Timing,包括:

  • 进程启动时间
  • 脚本启动时间( 节点不会像 process.uptime 要记录脚本开始运行时间,框架可以执行带有节点的启动前文件 --require 要设置的选项 process.scriptTime(中文(简体) )
  • application start 或者说 agent start 时间
  • 装入时间
  • require 会期

开始

开始记录一个项目 。 如果项目退出,则结束旧项目并开始新的项目.

  • {String} 名称 - 记录项名
  • {number} [start] - 记录项开始时间,默认为 Date.now()

结束

结束一个东西.

  • {String} 名称 - 尾项名

给杰森

生成所有记录项到 json

  • {String} 名称 - 记录项名
  • {数量} 开始 - 项目开始时间
  • {数量} 结束 - 项目结束时间
  • {数目} 持续时间 - 项目持续时间
  • {数目} pid - pid
  • {编号}索引-项目索引

问题和建议

请打开一个问题 这里。 。 。 .

许可证

麻省理工学院

贡献者

Contributors

制造的 贡献者-img。 。 。 .

版本与发布记录

@eggjs/core 共发布 95 个版本,首次发布于 2024/06/17;过去 12 个月发布了 33 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
7.1.0latest2026/10/071 个月前
7.0.22026/10/061 个月前
7.0.2-rc.1rc2026/10/061 个月前
7.0.2-rc.02026/09/231 个月前
7.0.2-beta.27beta2026/09/201 个月前
7.0.2-beta.262026/08/073 个月前

关于 @eggjs/core 的常见问题

@eggjs/core 是什么?

基于 @eggjs/koa 的核心插件框架

如何安装 @eggjs/core?

在项目目录运行 npm install @eggjs/core,或使用 pnpm add / yarn add / bun add。

@eggjs/core 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@eggjs/core 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@eggjs/core 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.18.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@eggjs/core 可以商用吗?

@eggjs/core 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@eggjs/core 的下载量有多少?

根据 npm 官方下载统计,@eggjs/core 在 2026/10/13 – 2026/11/11 这 30 天内被下载 6,312 次,日均约 210 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@eggjs/core 还在维护吗?

最新版本 7.1.0 发布于 2026/10/07(1 个月前);至今共发布 95 个版本,其中过去 12 个月发布了 33 个;首次发布于 2024/06/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。