Web应用开发框架-egg(四)——egg总结之egg快速入门、内置对象、运行环境、config配置、中间件、路由、控制器、服务service、插件、定时任务、自定义启动
第二章 Egg入门
- egg是什么?
- 基于koa封装的一个企业应用框架
- 可以写插件
- 可以根据业务去封装自己的framework
- 约定优于配置
- 基于koa封装的一个企业应用框架
- egg与koa的guanxi
- egg继承自koa
- egg可以基于koa去扩展
- 中间件
- extend 可以在ctx上挂载一些属性或者方法
- config
- 快速入门
- 安装
- npm init egg —type=simple
- 自动创建模板
- 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
- 编写一个中间件
- app/middleware/xxx.js 创建中间件
- 需要写一个闭包,reture一个function
- Config.default.js 注册
- app/middleware/xxx.js 创建中间件
- 渐进式开发思想
- 通过egg提供的lib 封装一些方法
- 稳定之后 可以发布成 npm包
- npm包越来越多
- 把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
- 使用 class 继承
- service
- 使用 class 继承
- require(‘egg’).Service
- app.Service
- 使用 class 继承
- Helper
- 模板
- ctx.helper
- config
- app.config
- application
- 运行环境
- 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 解决日志文件存储一致性
- 注入参数 app info
- 加载顺序
- 应用 > 框架 > 插件
- 合并规则
- 浅合并
- run 生成一个最终的配置表
- json
- meta.json 可以看到从哪里修改的配置
- 配置
- 中间件
- (options, app) => (ctx, next) => {}
- options 来源于config
- App
- 应用和框架都可以添加
- app/middleware
- app.config.coreMiddleware
- 引入koa的中间件
- 自己包装
- 本身符合规范
- 通用配置
- enable
- match
- Ignore
- (options, app) => (ctx, next) => {}
- 路由
- resources
- 自动帮我们生成restful api
- 对应controller 的 类,而不是某一个具体的方法
- 参数
- query 地址栏参数
- params 路由约定的参数
- resources
- 控制器
- 作用
- 解析http,返回结果
- 需要把数据库的一些操作加入到service
- 解析http,返回结果
- 支持编写多层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
- 生命周期
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/yd-ios/10735.html