搭建出一个 Egg.js 应用,让你能快速的入门 Egg.js。

环境要求

node.js 8>=
npm>=6.0

  1. mkdir egg-example && cd egg-example
  2. npm init egg --type=simple # 初始化
  3. npm i
  4. npm run dev # 启动

Controller

  1. // app/controller/home.js
  2. const Controller = require('egg').Controller;
  3. class HomeController extends Controller {
  4. async index() {
  5. this.ctx.body = 'Hello world';
  6. }
  7. }
  8. module.exports = HomeController;
  9. // 路由配置
  10. // app/router.js
  11. module.exports = app => {
  12. const { router, controller } = app;
  13. router.get('/', controller.home.index);
  14. };
  15. // 配置文件
  16. // config/config.default.js
  17. exports.keys = <此处改为你自己的 Cookie 安全字符串>;

目录结果

  1. egg-project
  2. ├── package.json // npm
  3. ├── app.js (可选) // 程序入库
  4. ├── agent.js (可选)
  5. ├── app
  6. | ├── router.js // 路由
  7. ├── controller // 控制层
  8. | └── home.js
  9. ├── service (可选) // 服务
  10. | └── user.js
  11. ├── middleware (可选) //中间件
  12. | └── response_time.js
  13. ├── schedule (可选) // 定时任务
  14. | └── my_task.js
  15. ├── public (可选) // 公共资源
  16. | └── reset.css
  17. ├── view (可选) // 视图
  18. | └── home.tpl
  19. └── extend (可选) // 扩展
  20. ├── helper.js (可选)
  21. ├── request.js (可选)
  22. ├── response.js (可选)
  23. ├── context.js (可选)
  24. ├── application.js (可选)
  25. └── agent.js (可选)
  26. ├── config // 配置
  27. | ├── plugin.js
  28. | ├── config.default.js
  29. ├── config.prod.js
  30. | ├── config.test.js (可选)
  31. | ├── config.local.js (可选)
  32. | └── config.unittest.js (可选)
  33. └── test //测试
  34. ├── middleware
  35. | └── response_time.test.js
  36. └── controller
  37. └── 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.jsagent.js 用于自定义启动时的初始化工作,可选,具体参见启动自定义。关于agent.js的作用参见Agent机制

由内置插件约定的目录:

  • app/public/** 用于放置静态资源,可选,具体参见内置插件 egg-static
  • app/schedule/** 用于定时任务,可选,具体参见定时任务

若需自定义自己的目录规范,参见 Loader API

  • app/view/** 用于放置模板文件,可选,由模板插件约定,具体参见模板渲染
  • app/model/** 用于放置领域模型,可选,由领域类相关插件约定,如 egg-sequelize