egg 是什么?
egg 是阿里出品的一款 node.js 后端 web 框架,基于 koa 封装,并做了一些约定。
为什么叫 egg ?
egg 有孕育的含义,因为 egg 的定位是企业级 web 基础框架,旨在帮助开发者孕育适合自己团队的框架。
哪些产品是用 egg 开发的?
语雀 就是用 egg 开发的
egg 和 koa 是什么关系?
koa 是 egg 的基础框架,egg 是对 koa 的增强。
学习 egg 需要会 koa 吗?
不会 koa 也可以直接上手 egg,但是会 koa 的话有助于更深层次的理解 egg。
创建项目
npm i egg-init -g
egg-init egg-test --type=simple //例如:egg-init 项目名称 --type=simple
cd egg-test
npm i
目录结构
├── app
│ ├── controller
│ │ └── home.js
│ └── router.js
├── config
│ ├── config.default.js
│ └── plugin.js
├── package.json
这就是最小化的 egg 项目,用 npm i 安装依赖之后,执行启动命令:
npm run dev
[master] node version v14.15.1
[master] egg version 2.29.1
[master] agent_worker#1:23135 started (842ms)
[master] egg started on http://127.0.0.1:7001 (1690ms)
打开 http://127.0.0.1:7001/ 会看到网页上显示 hi, egg 。
目录约定
上面创建的项目只是最小化结构,一个典型的 egg 项目有如下目录结构:
egg-project
├── package.json
├── app.js (可选)
├── agent.js (可选)
├── app/
| ├── router.js # 用于配置 URL 路由规则
│ ├── controller/ # 用于存放控制器(解析用户的输入、加工处理、返回结果)
│ ├── model/ (可选) # 用于存放数据库模型
│ ├── service/ (可选) # 用于编写业务逻辑层
│ ├── middleware/ (可选) # 用于编写中间件
│ ├── schedule/ (可选) # 用于设置定时任务
│ ├── public/ (可选) # 用于放置静态资源
│ ├── view/ (可选) # 用于放置模板文件
│ └── extend/ (可选) # 用于框架的扩展
│ ├── helper.js (可选)
│ ├── request.js (可选)
│ ├── response.js (可选)
│ ├── context.js (可选)
│ ├── application.js (可选)
│ └── agent.js (可选)
├── config/
| ├── plugin.js # 用于配置需要加载的插件
| ├── config.{env}.js # 用于编写配置文件(env 可以是 default,prod,test,local,unittest)
这是由 egg 框架或内置插件约定好的,是阿里总结出来的最佳实践,虽然框架也提供了让用户自定义目录结构的能力,但是依然建议大家采用阿里的这套方案。在接下来的篇章当中,会逐一讲解上述约定目录和文件的作用。
本文暂时没有评论,来添加一个吧(●'◡'●)