Skip to content

Commit 793e307

Browse files
authored
Merge pull request #2 from SalakJS/docs/1
docs(middleware,router): 增加路由加载顺序说明
2 parents 55e31f5 + f47e981 commit 793e307

File tree

2 files changed

+48
-37
lines changed

2 files changed

+48
-37
lines changed

website/translated_docs/zh-CN/middleware.md

Lines changed: 44 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ id: middleware
33
title: 中间件
44
---
55

6-
Salak是基于Koa 2.0开发,所以Salak的中间件形式与Koa中间件一致
6+
Salak 是基于 Koa 2.0 开发,所以 Salak 的中间件形式与 Koa 中间件一致
77

88
## 编写中间件
99

@@ -26,9 +26,9 @@ module.export = async (ctx, next) => {
2626
}
2727
```
2828

29-
如果返回 async function,会加入到中间件执行队列中,否则会先执行mw(options, app),然后将返回结果加入到中间件执行队列。
29+
如果返回 async function,会加入到中间件执行队列中,否则会先执行 mw(options, app),然后将返回结果加入到中间件执行队列。
3030

31-
接下来,我们以写简单的error中间件为例
31+
接下来,我们以写简单的 error 中间件为例
3232

3333
```javascript
3434
module.exports = ({ status = 500 } = {}, app) => {
@@ -51,26 +51,26 @@ module.exports = ({ status = 500 } = {}, app) => {
5151

5252
#### 模块配置中使用
5353

54-
通过配置middleware字段,中间件配置通过配置对应的key即可
54+
通过配置 middleware 字段,中间件配置通过配置对应的 key 即可
5555

56-
middleware配置有两种写法
56+
middleware 配置有两种写法
5757

58-
- 直接写中间件对应文件的名字,如error.js:
58+
- 直接写中间件对应文件的名字,如 error.js:
5959

6060
```javascript
61+
// common/config/default.js:
6162
module.exports = {
62-
middleware: [
63-
'error'
64-
],
63+
middleware: ['error'],
6564
error: {
6665
status: 500
6766
}
6867
}
6968
```
7069

71-
- 写中间件名字,以及中间对应的位置,如果中间件通过npm安装,只需指定包名即可,如:
70+
- 写中间件名字,以及中间对应的位置,如果中间件通过 npm 安装,只需指定包名即可,如:
7271

7372
```javascript
73+
// common/config/default.js:
7474
module.exports = {
7575
middleware: [
7676
{
@@ -88,17 +88,24 @@ module.exports = {
8888
#### 控制器构造函数中使用
8989

9090
```javascript
91-
this.middleware('error', this.module, {
92-
status: 503
93-
})
91+
// src/${module}/controller/${name}.js:
92+
constructor () {
93+
this.middleware('error', this.module, {
94+
status: 503
95+
})
96+
}
97+
9498
```
9599

96100
控制器构造函数还支持控制器内自定义中间件,如
97101

98102
```javascript
99-
this.middleware(async (ctx, next) => {
100-
await next()
101-
})
103+
// src/${module}/controller/${name}.js:
104+
constructor () {
105+
this.middleware(async (ctx, next) => {
106+
await next()
107+
})
108+
}
102109
```
103110

104111
### 中间件查询原则
@@ -107,7 +114,7 @@ this.middleware(async (ctx, next) => {
107114

108115
在控制器中,指定模块中间件,查询不到,会查询框架内建中间件
109116

110-
### 使用Koa中间件
117+
### 使用 Koa 中间件
111118

112119
[koa-etag](https://github.com/koajs/etag)为例,在框架运行中加载这个中间件,只需要在配置文件中添加如下代码:
113120

@@ -131,13 +138,13 @@ module.exports = {
131138

132139
框架自带的中间件或应用层中间件,都支持如下配置:
133140

134-
- `enable`: Boolean,控制中间件是否开启,默认为true
141+
- `enable`: Boolean,控制中间件是否开启,默认为 true
135142
- `match`: Regex|string|Array|Function,设置只有符合条件的请求才经过该中间件
136143
- `ignore`: Regex|string|Array|Function,设置符合某些规则的请求不经过该中间件
137144

138145
### enable
139146

140-
如果我们需要禁用某个中间件,只需要将其设置为false即可
147+
如果我们需要禁用某个中间件,只需要将其设置为 false 即可
141148

142149
```javascript
143150
module.exports = {
@@ -149,9 +156,9 @@ module.exports = {
149156

150157
### match/ignore
151158

152-
match和ignore参数一致,但作用相反,不允许同时配置。
159+
match 和 ignore 参数一致,但作用相反,不允许同时配置。
153160

154-
如想让仅以/meta开头的请求使用meta中间件,配置如下:
161+
如想让仅以/meta 开头的请求使用 meta 中间件,配置如下:
155162

156163
```javascript
157164
module.exports = {
@@ -161,16 +168,16 @@ module.exports = {
161168
}
162169
```
163170

164-
match和ignore支持的参数如下
171+
match 和 ignore 支持的参数如下
165172

166-
- `string`: 当参数为字符串时,配置的是URL前缀,也能配置成字符串数组;
173+
- `string`: 当参数为字符串时,配置的是 URL 前缀,也能配置成字符串数组;
167174
- `Regex`: 正则表达式,直接匹配路径是否符合条件;
168-
- `Function`: 允许传入函数,由用户控制具体的规则,参数为ctx,通过返回 true/false 来判断是否满足条件。
175+
- `Function`: 允许传入函数,由用户控制具体的规则,参数为 ctx,通过返回 true/false 来判断是否满足条件。
169176

170177
```javascript
171178
module.exports = {
172179
meta: {
173-
match (ctx) {
180+
match(ctx) {
174181
if (ctx.path.indexOf('meta') !== 0) {
175182
return true
176183
}
@@ -193,7 +200,7 @@ module.exports = {
193200

194201
### 禁用默认中间件
195202

196-
在根模块配置中,将内置中间件enable设置为false即可
203+
在根模块配置中,将内置中间件 enable 设置为 false 即可
197204

198205
如:
199206

@@ -207,43 +214,43 @@ module.exports = {
207214

208215
### static
209216

210-
静态资源渲染,采用koa-static
217+
静态资源渲染,采用 koa-static
211218

212219
配置:
213220

214-
- `root`: 默认为应用public
221+
- `root`: 默认为应用 public
215222
- `opts`: 同[koa-static opts](https://github.com/koajs/static#options)
216223

217224
### bodyParser
218225

219-
采用了koa-bodyparser,默认支持json、form解析
226+
采用了 koa-bodyparser,默认支持 json、form 解析
220227

221228
配置可参考[koa-bodyparser](https://github.com/koajs/bodyparser#options)
222229

223-
**注:koa-bodyparser已经不包含multipart/form-data解析**
230+
**注:koa-bodyparser 已经不包含 multipart/form-data 解析**
224231

225232
### error
226233

227-
error中间件,处理应用请求过程中报错
234+
error 中间件,处理应用请求过程中报错
228235

229236
配置:
230237

231-
- `status`: 状态码设置,默认为'auto',表示根据出错状态来自动设置http响应状态码;否则为200状态码
232-
- `type`: 错误输出类型,可以为json或者html,无配置情况下,框架根据accept-type自动选择
238+
- `status`: 状态码设置,默认为'auto',表示根据出错状态来自动设置 http 响应状态码;否则为 200 状态码
239+
- `type`: 错误输出类型,可以为 json 或者 html,无配置情况下,框架根据 accept-type 自动选择
233240

234241
### notFound
235242

236-
notFound中间件,处理应用请求404错误
243+
notFound 中间件,处理应用请求 404 错误
237244

238245
配置:
239246

240-
- `type`: 输出类型,可以为json或html,无配置情况下,框架根据accept-type自动选择
241-
- `pageUrl`: 如设置,出现404时,则跳转至相应URL
247+
- `type`: 输出类型,可以为 json 或 html,无配置情况下,框架根据 accept-type 自动选择
248+
- `pageUrl`: 如设置,出现 404 时,则跳转至相应 URL
242249
- `notFoundHtml`: 定制错误页面
243250

244251
### siteFile
245252

246-
siteFile中间件,用于配置网站文件
253+
siteFile 中间件,用于配置网站文件
247254

248255
如:
249256

website/translated_docs/zh-CN/router.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ module.exports = {
5757
- `defaultMethods: string|string[]`: 默认注册的HTTP Methods,默认为GET
5858
- `loadOrder: string[]`: Controller加载顺序,可指定加载模块哪些控制器以及相应的路由注册顺序
5959

60+
## 路由匹配顺序
61+
在URL可以匹配多个路由的情况下,路由的选择默认是由对应actionXXX方法在controller中注册的先后顺序决定,与behavior或controller中Routes中配置顺序无关。使用loadOrder配置可以覆盖默认行为。
62+
63+
6064
## 路由注册路径
6165

6266
在框架启动时,会生成 `/runtime/router/definitions.json`,该文件包含了注册的所有路由,可以根据该文件来排查一些问题。

0 commit comments

Comments
 (0)