egg.js中,約定一個中間件是一個放置在`app/middleware`目錄下的單獨文件,它需要導出module.exports,導出為一個普通的函數,接受兩個參數:
`option`:中間件的配置,框架會將app.config[${middlewareName}]傳遞過來。
`app`:當前應用Application的實例子。
## 定義一個訪問任何地址,都先打印日期的中間件
### 1.創建中間件

~~~
//middlewate/printdate.js
module.exports = (options,app)=>{
//返回一個異步的方法
return async function printDate(ctx,next){
console.log(new Date);
await next()
}
}
~~~
### 2.配置中間件
>[warning]Tip:文件名要和middleware的文件名一樣
~~~
config/config.default.js中配置
module.exports = appInfo => {
// 增加配置中間件
config.middleware = ['printdate'];
}
~~~

### 3.給中間件傳遞參數
~~~
config/config.default.js中配置
// 增加配置中間件
config.middleware = ['printdate'];
config.printdate={
params:"給中間件傳遞參數"
}
~~~
~~~
//middlewate/printdate.js
//在中間件中通過options接受
module.exports = (options,app)=>{
//返回一個異步的方法
return async function printDate(ctx,next){
console.log(new Date);
console.log(options)
//{ params: '給中間件傳遞參數' }
await next()
}
}
~~~