949787276df56cf7cacf7d5eaeae157f_1142x635.png
egg.png

1.简介

Base on Koa

middleware的局限

  • 定位拦截用户请求,并在它前后做一些事情。
  • 但实际情况下,很多功能与请求无关,如定时任务,初始化,Application扩展
  • 功能之间的顺序不能简单的交给开发者,需要统一编排,管理

    对于企业级应用来说,还比较基础,需要进一步封装。

2.思考

  • 企业级开发中需要关注的有哪些点?
  • 开发者和团队技术负责人,关注点一样么?

    理想的企业级web开发的核心要素

第一章 起步 - 图3

3.一个大规模团队的基础框架

最重要的是:需要遵循一定的约束和约定。

quitstart

  1. npm i egg-init -g
  2. mkdir egg-example && cd egg-example
  3. npm init egg --type=simple
  4. npm i
  5. //启动项目
  6. npm run dev

编程模型规范

  1. egg-project
  2. ├── app
  3. ├── controller(控制器) -->参数处理,调用api,模板渲染
  4. | └── home.js
  5. ├── service (业务逻辑)
  6. | └── user.js
  7. ├── view (模板)
  8. | └── home.tpl
  9. ├── public (静态资源)
  10. | └── reset.css
  11. | ├── router.js(路由)
  12. ├── config(配置)
  13. | ├── plugin.js
  14. | ├── config.default.js
  15. ├── config.prod.js
  16. └── test
  17. ├── middleware
  18. | └── response_time.test.js
  19. └── controller
  20. └── home.test.js
  • 约定优于配置
  • Loader机制-自动挂载
  • Controller/Service/View

    模板引擎

  1. egg-view-ejs
  2. egg-view-vue
  3. egg-view-react
  4. egg-view-nunjucks

4.插件生态

  • 进程:egg-cluster
  • 安全:egg-security
  • 模板:egg-view-nunjucks
  • 日志:egg-logger
  • 数据库:egg-mysql/egg-sequelize
  • 统一登录:egg-password-xxx
  • 兼容koa中间件生态

    进程管理

    健壮性,处理未捕获异常,优雅退出

    Master/Worker之外,还多了个Agent进程

  • 只有一个Agent,负责脏活累活

  • 不对外服务,专门处理公共事务
  • 如:定时日志切割,公共资源访问,后端长连接

    5.掘金文档

  • https://juejin.im/post/5c99cbdee51d455b251df9eb#heading-58