• /app 主目录
  • /config 配置目录
  • /test 测试目录
  • /logs 日志文件
  • /run 项目运行生成的
  • autod.conf.js

MVC架构图

mvc架构图.png

egg mvc时序图

image.png

服务端架构

服务器端通常采用三层体系架构,分别

  1. 表现层 web
  2. 业务逻辑层 service
  3. 持久层 DAO
  1. mvc第一步,编写 controller & router
  2. http的所有请求都放在 services目录下
    1. models下 调用 serivces
      1. ├── app
      2. ├── controller
      3. └── news.js
      4. ├── middleware
      5. └── robot.js
      6. ├── public
      7. ├── router.js // 定义路由
      8. ├── routes
      9. ├── schedule
      10. └── update_cache.js
      11. ├── service
      12. └── news.js
      13. └── view
      14. └── news.html //模板 news.ejs, news.njk
      15. ├── app.js
      16. ├── config
      17. ├── config.default.js // config目录配置 key
      18. └── plugin.js
      19. ├── database
      20. └── config.json
      21. ├── docs
      22. ├── egg.md
      23. └── images
      24. ├── controller1.jpg
      25. └── npx\ sequelize.jpg
      26. ├── logs
      27. └── eggjs
      28. ├── common-error.log
      29. ├── egg-agent.log
      30. ├── egg-schedule.log
      31. ├── egg-web.log
      32. └── eggjs-web.log
      33. ├── package-lock.json
      34. ├── package.json
      35. └── run
      36. ├── agent_config.json
      37. ├── agent_config_meta.json
      38. ├── agent_timing_2416.json
      39. ├── application_config.json
      40. ├── application_config_meta.json
      41. └── router.json

app

controller

view

service

读取 数据库,远程接口

  1. 添加配置
  2. 编写 service 代码
  3. 编写 controller 代码

  4. 创建数据模型

  5. 模板和路由
  6. 开发接口

controller调用 services
services里面调用数据库

findOne

  1. const res = await User.findOne({
  2. attributes: ['id', 'username', 'nickname', 'city', 'address'],
  3. where: { username: 'lucy', password: '123' }
  4. });
  5. if(!res) return null;
  6. //cors跨域配置
  7. config.security = {
  8. csrf: {
  9. enable: false,
  10. },
  11. domainWhiteList: ['*'], //允许访问域名的白名单,*表示都能访问
  12. }
  13. config.cors = {
  14. origin: '*',
  15. allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS', //允许请求的方法
  16. }

egg渐进式开发

https://www.axihe.com/edu/egg/tutorials/progressive.html
https://blog.csdn.net/aSuncat/article/details/114092145
https://blog.csdn.net/aSuncat/article/details/114092145