首页 > 其他分享 >egg学习

egg学习

时间:2023-04-26 23:57:07浏览次数:40  
标签:egg app 配置 中间件 js 学习 now config

1. 可以编写插件,可以进行扩展,约定优于配置

2. egg初始化后的文件目录

 

3. 在config 目录下面的plugin.js 中引入插件,在 config.default.js 中对插件进行配置

Egg.js 中的中间件分为三种类型:全局中间件、插件中间件和路由中间件。全局中间件是在整个应用中生效,而插件中间件和路由中间件只在对应的插件或路由中生效。

 

因此需要包装一下上面写的中间件

module.exports = (options, app) => {
  return async function cost(ctx, next) {
    const now = Date.now();
    await next();
    ctx.set('X-Response-Time', `${Date.now() - now}ms`);
  };
};
复制代码

中间件可以添加配置,允许开发者自定义响应头

module.exports = options => {
  const header = options.header || 'X-Response-Time';

  return async function cost(ctx, next) {
    const now = Date.now();
    await next();
    ctx.set(header, `${Date.now() - now}ms`);
  };
};

注意:egg中扩展都是属性扩展,不是方法扩展


egg的目录结构


4. application 全局对象,只能实例化一次
监听事件 server, HTTP服务启动完毕
error
request
response

获取
app.js
Controller 中 this.app this.context.app 可以拿到

Context 是一个请求级别的对象,继承自Koa.Context,在每一次收到用户请求时,框架会实例化一个Context对象,这个对象
封装了这次用户请求的信息,并提供了许多便捷方法来获取请求参数或者设置响应信息。框架会将所有Service挂载到Context实例上

可以创建临时Context,能够在Middleware,Conyroller,Service获取,通过createAnonymousContext()获取临时Context

可以通过app.config 从Application实例上获取到Config对象,也可以在Controller,Service,Helper的实例上通过this.config 获取到Config对象

通过EGG_SERVER_ENV=site npm start 设置项目运行环境 通过
app.config.env 获取当前环境

Config 配置
框架提供了强大且可扩展的配置功能,可以自动合并应用、插件、框架的配置。按顺序覆盖且可以根据环境维护不同的配置,合并后的配置可直接从app.config获取

多环境配置
框架支持根据环境来加载配置,定义多个环境的配置文件。
config
  config.default.js
  config.prod.js
  config.unittest.js
  config.local.js

当指定env时会同时加载对应的配置文件,并覆盖默认配置文件的同名配置,如prod环境会加载config.prod.js和config.default.js文件,config.prod.js会覆盖
config.default.js 同名的配置

a.unshift(100)  // js 从数组开头添加元素

通过app.config.coreMiddleware.unshift('report'); // 在框架中添加中间件

在应用中添加中间件,通过app/middleware 文件夹添加中间件

可以通过自己包装或者引入本身符合规范的koa中间件

 

中间件具有通用配置

无论是应用层加载的中间件还是框架自带中间件,都支持几个通用的配置项

enable:控制中间件是否开启

match:设置只有符合某些规则的请求才会经过这个中间件。

ignore:设置符合某些规则的请求不经过这个中间件。

 

在router中传入某个中间件,设置单个路由生效。

1. match 可以设置字符串类型,表示配置的是一个url的路径前缀,所有以配置字符串前缀的url都会匹配上,也可以使用字符串数组

2. 正则:当参数为正则时,直接匹配满足正则验证的url的路径

3. 函数:当参数为一个函数时,会将请求上下文传递给这个函数,最终取函数返回结果(true/false)来判断是否匹配。

module.exports = {

  gzip: {

    match(ctx) {

       // 只有ios设备才开启

    }

  }

}

 

 

 

 

 

 

 

 

 

 

 




































 

标签:egg,app,配置,中间件,js,学习,now,config
From: https://www.cnblogs.com/zzlback/p/17357056.html

相关文章

  • Go Web学习笔记--处理表单的输入
    通过一个注册的示例来演示如何通过Go语言来处理表单的输入。首先,创建一个简单的html文件,代码如下:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><formaction="/log......
  • 2023.4.26三天学习总结
    一.三天任务完成情况1.完成了tarjan求强连通分量以及在缩点后的DAG上dp的复习2.完成了tarjan求点双和边双以及在缩点后数方案数的复习3.简单制定了一下接下来一年的学习计划4.完成了div3的补题二.截图 三.题解CodeforcesRound867(Div.3)......
  • 初识--深度学习
    所谓深度学习,其实也是机器学习中的一部分,而且更加突出了“学习”的概念,去学习什么样的特征组合是最合适的。机器学习的流程是:数据获取,特征工程,建立模型,评估应用。所谓深度学习,不要把他当成一种算法,你要把他当成一种提取特征的工具,由于特征之间不同的组合,所以造成了神经......
  • 单片机学习-Writing
    Date:2023-04-0111:17:44ps:写作中前言我的专业是物联网工程,虽然几乎没怎么听过课,但毕业设计把我硬生生逼入门了,以下为我的学习感受,知识不应该被遗忘,应该被记录,储存,对我自己有意义就可以了实现阿里云温湿度监测完成毕业设计目标,随便选的一个课题,学校要求要使用超过3个传......
  • 高斯消元学习笔记
    一、前言讲一下高斯-约旦消元法。它适用于处理\(n\)元1次方程组。误差较小并且好写。二、步骤主要用消元的方式求解,就是一列列处理,每一次处理消掉这一列所有其它的未知数。处理第\(i\)列:找到当前这一列的所有系数的绝对值的最大值,确定在第\(x\)行。如果这一列全......
  • 学习(review)二——CSS(上)
    CSS(层叠样式表)一般通过<styletype="text/css">内部为CSS环境</style>进行编写CSS。使用CSS,您可以控制颜色、字体、文本大小、元素之间的间距、元素的位置和布局、要使用的背景图像或背景颜色、不同设备的不同显示和屏幕大小等等CSS一般用于修饰页面显示效果设计网页的样......
  • 王者荣耀英雄张良技能单词学习---continuous,intercept,battery,suppress 这四个单词
    刚刚用张良拿了首胜言灵·咒令(被动技能)被动:张良对任一敌人造成的相邻两次普攻或技能伤害的时间间隔若小于1.5秒,这两次伤害的间隔时间被视为“连续攻击状态”,该状态每积累满1.2秒,会使该敌人额外承受140(+50%法术加成)点真实伤害,该伤害随英雄等级每级成长10点。这个技能重点是连续,只......
  • python+playwright 学习-57 svg 元素拖拽
    前言SVG英文全称为ScalablevectorGraphics,意思为可缩放的矢量图,这种元素比较特殊,需要通过​name​()函数来进行定位。本篇讲下关于svg元素的拖拽相关操作。拖拽svg元素如图所示,svg下的circle元素是可以拖动的比如往右拖动100个像素,那么cx的值由原来的cx="100"变成......
  • 最大公约数学习笔记
    一、定义因数/约数:给定一个正整数\(x\),\(x\)的因数/约数就是所有满足\(x\)是\(y\)的正整数倍的\(y\)。最大公因数/最大公约数:给定两个正整数\(a\),\(b\),求一个最大的正整数数\(x\),使得它同时是\(a\)和\(b\)的因数。一般在OI中记为\((a,b)=x\),在数学上记为\(\gc......
  • 华为HCIP学习清单
    华为HCIP学习清单本篇博客用于汇总本人对于华为HCIP-Datacom方向的学习笔记,便于索引.笔记HCIP-ICT实战进阶01-OSPF各类LSA介绍及分析HCIP-ICT实战进阶02-OSPF特殊区域及其他特性HCIP-ICT实战进阶03-OSPF高级特性HCIP-ICT实战进阶04-ISIS原理与配置HCIP-ICT实战进阶05-路......