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`); }; };
app.config.env 获取当前环境
注意: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 设置项目运行环境 通过
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