Web应用开发框架-egg(四)——egg总结之egg快速入门、内置对象、运行环境、config配置、中间件、路由、控制器、服务service、插件、定时任务、自定义启动

Web应用开发框架-egg(四)——egg总结之egg快速入门、内置对象、运行环境、config配置、中间件、路由、控制器、服务service、插件、定时任务、自定义启动

第二章 Egg入门

  • egg是什么?

    • 基于koa封装的一个企业应用框架
      • 可以写插件
      • 可以根据业务去封装自己的framework
      • 约定优于配置
  • egg与koa的guanxi

    • egg继承自koa
    • egg可以基于koa去扩展
      • 中间件
      • extend 可以在ctx上挂载一些属性或者方法
      • config
  • 快速入门

    • 安装
      • npm init egg —type=simple
        • 自动创建模板
    • 编写了第一个controller
      • router里面调用的是命名空间
      • router.get(‘/’, controller.home.index);
      • ctx.body = ‘hi, egg’;
    • 静态资源
      • static是内置的
      • 目录 app/public
      • 访问路径 localhost:7001/public/xxxx.js
    • 模板引擎
      • npm install egg-view-nunjucks
      • config/plugin.js 引入插件
      • config.default.js 对模板引擎进行配置
      • 渲染: await ctx.render
    • 写一个helper扩展
      • app/extend/helper.js
      • 2个地方调用
        • 模板
        • ctx
    • 编写一个中间件
      1. app/middleware/xxx.js 创建中间件
        1. 需要写一个闭包,reture一个function
      2. Config.default.js 注册
    • 渐进式开发思想
      1. 通过egg提供的lib 封装一些方法
      2. 稳定之后 可以发布成 npm包
      3. npm包越来越多
      4. 把npm包根据业务场景组合起来形成你自己的解决方案
  • 内置对象

    • application
      • 全局的对象,只能实例化一次
      • 监听事件
        • server http服务启动完毕
        • error
        • request
        • response
      • 获取
        • app.js
        • controller
          • this.app
          • this.ctx.app
    • context
      • 伴随每一次请求,一次请求实例化一次
      • 作用
        • 解析请求参数,或者一些响应
      • 获取方式
        • middleware, controller, service
        • app.createAnonymousContext
    • Request & response
      • 作用: 解析请求参数
      • 挂载在ctx对象上面
    • controller
      • 使用 class 继承
        • require(‘egg’).Controller
        • app.Controller
    • service
      • 使用 class 继承
        • require(‘egg’).Service
        • app.Service
    • Helper
      • 模板
      • ctx.helper
    • config
      • app.config
  • 运行环境

    • EGG_SERVER_ENV=xxx npm run start
    • 获取方式 app.config.env
  • config

    • 配置
      • Config.default.js
      • 可以通过环境去覆盖 config.local.js
    • 配置的写法
      • exports 对象
      • exports function
        • 注入参数 app info
          • pkg
          • name
          • baseDir
          • HOME
          • root 解决日志文件存储一致性
      • 加载顺序
        • 应用 > 框架 > 插件
      • 合并规则
        • 浅合并
      • run 生成一个最终的配置表
        • json
        • meta.json 可以看到从哪里修改的配置
  • 中间件

    • (options, app) => (ctx, next) => {}
      • options 来源于config
      • App
    • 应用和框架都可以添加
      • app/middleware
      • app.config.coreMiddleware
    • 引入koa的中间件
      • 自己包装
      • 本身符合规范
    • 通用配置
      • enable
      • match
      • Ignore
  • 路由

    • resources
      • 自动帮我们生成restful api
      • 对应controller 的 类,而不是某一个具体的方法
    • 参数
      • query 地址栏参数
      • params 路由约定的参数
  • 控制器

    • 作用
      • 解析http,返回结果
        • 需要把数据库的一些操作加入到service
    • 支持编写多层controller
    • 设计技巧
      • 可以去使用oop思想,抽象一些基类
    • 获取参数
      • params
      • query
      • queries
      • Post body
        • 带上csrf token
    • 重定向
      • 白名单
  • 服务 Service

    • app/service
    • 和控制器类似,也是一个类
  • 插件

    • 解决了中间件做不到的事情
      • 洋葱模型很难调整顺序
      • 封装请求之外的逻辑
    • 除了没有 route 和 controller,和 egg app很相似
    • 引入
      • npm
      • path
    • 怎么 编写插件
      • npm init egg —type=plugin
      • package.json 配置 eggPlugin
        • name
        • dependencies
        • optional
        • env
      • 依赖关系
        • 会先加载被依赖的插件
  • 定时任务

    • 作用 :
      • 定期更新缓存
      • 定期删除日志
      • 定期查询服务器状态
    • 书写
      • class
      • 导出一个对象
    • 参数
      • interval
      • type
  • 自定义启动

    • 生命周期
      • configWillLoad
      • didLoad
      • willReady
      • didReady
      • ServerDidReady

猜你喜欢

转载自blog.csdn.net/weixin_44867717/article/details/134130681
今日推荐