简单介绍
2023/2/23大约 9 分钟
简单介绍
Egg.js缩写为 Egg,是为企业级框架和应用而生,我们希望由 Egg.js 孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本。
设计原则
Egg 的插件机制有很高的可扩展性,一个插件只做一件事(比如 Nunjucks 模板封装成了 egg-view-nunjucks、MySQL 数据库封装成了 egg-mysql)。Egg 通过框架聚合这些插件,并根据自己的业务场景定制配置,这样应用的开发成本就变得很低。
Egg 奉行『约定优于配置』,按照一套统一的约定进行应用开发,团队内部采用这种方式可以减少开发人员的学习成本,开发人员不再是『钉子』,可以流动起来。没有约定的团队,沟通成本是非常高的,比如有人会按目录分栈而其他人按目录分功能,开发者认知不一致很容易犯错。但约定不等于扩展性差,相反 Egg 有很高的扩展性,可以按照团队的约定定制框架。使用 Loader 可以让框架根据不同环境定义默认配置,还可以覆盖 Egg 的默认约定。
特性
- 提供基于
Egg定制上层框架的能力 - 高度可扩展的插件机制
- 内置多进程管理
- 基于
Koa开发,性能优异 - 框架稳定,测试覆盖率高
- 渐进式开发
目录结构
利用官方提供的指令npm init egg --type=simple可以得到egg项目模板,而实际的项目会比模板复杂一些、层次分明一点
npm init egg --type=simpleegg-project
├── package.json
├── app.js (可选)
├── agent.js (可选)
├── app
| ├── router.js
│ ├── controller
│ | └── home.js
│ ├── service (可选)
│ | └── user.js
│ ├── middleware (可选)
│ | └── response_time.js
│ ├── schedule (可选)
│ | └── my_task.js
│ ├── public (可选)
│ | └── reset.css
│ ├── view (可选)
│ | └── home.tpl
│ └── extend (可选)
│ ├── helper.js (可选)
│ ├── request.js (可选)
│ ├── response.js (可选)
│ ├── context.js (可选)
│ ├── application.js (可选)
│ └── agent.js (可选)
├── config
| ├── plugin.js
| ├── config.default.js
│ ├── config.prod.js
| ├── config.test.js (可选)
| ├── config.local.js (可选)
| └── config.unittest.js (可选)
└── test
├── middleware
| └── response_time.test.js
└── controller
└── home.test.js相关说明:
app/router.js用于配置 URL 路由规则,具体参见Router。app/controller/**用于解析用户的输入,处理后返回相应的结果,具体参见Controller。app/service/**用于编写业务逻辑层,可选,建议使用,具体参见Service。app/middleware/**用于编写中间件,可选,具体参见Middleware。app/public/**用于放置静态资源,可选,具体参见内置插件egg-static。app/extend/**用于框架的扩展,可选,具体参见框架扩展。config/config.{env}.js用于编写配置文件,具体参见配置。config/plugin.js用于配置需要加载的插件,具体参见插件。test/**用于单元测试,具体参见单元测试。app.js 和 agent.js用于自定义启动时的初始化工作,可选,具体参见启动自定义。关于agent.js的作用参见Agent机制。
由内置插件约定的目录:
app/public/**用于放置静态资源,可选,具体参见内置插件egg-static。app/schedule/**用于定时任务,可选,具体参见定时任务。
若需自定义自己的目录规范,参见 Loader API
app/view/**用于放置模板文件,可选,由模板插件约定,具体参见模板渲染。app/model/**用于放置领域模型,可选,由领域类相关插件约定,例如: egg-sequelize或者egg-sequelize-plus(是在egg-sequelize基础上开发的模块,目前我仍在维护)
更新日志
2024/7/28 10:06
查看所有更新日志
c0f2d-于d8829-于3c69b-于b5563-于b0275-于5f1e1-于02ab1-于a23ce-于0ef50-于bc074-于