Skip to content

Commit eadd1c9

Browse files
committed
feat(server.js): applyMiddleware API升级,现在允许用户调用多次绑定多个Middleware,它们将会按照绑定顺序依次执行。
1 parent 5c3fbdf commit eadd1c9

File tree

3 files changed

+25
-14
lines changed

3 files changed

+25
-14
lines changed

lib/commands/server.js

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
'use strict';
22

3-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3+
function _defineProperty(obj, key, value) {
4+
if (key in obj) {
5+
Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
6+
} else {
7+
obj[key] = value;
8+
}
9+
return obj;
10+
}
411

512
var connect = require('connect'),
613
fs = require('fs'),
@@ -130,13 +137,17 @@ exports.run = function (options) {
130137
try {
131138
var projectInfo = getProjectInfo(req);
132139
var project = Manager.getProject(projectInfo.projectCwd, { cache: false });
133-
var customMiddleware = project.config.getMiddleware();
140+
var customMiddlewares = project.config.getMiddlewares();
141+
var _next = () => {
142+
if (customMiddlewares.length === 0) {
143+
next();
144+
} else {
145+
const nextMw = customMiddlewares.shift();
146+
nextMw(req, res, _next);
147+
}
148+
};
134149

135-
if (typeof customMiddleware === 'function') {
136-
customMiddleware(req, res, next);
137-
} else {
138-
next();
139-
}
150+
_next();
140151
} catch (e) {
141152
next();
142153
}

lib/models/Config.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ var Config = function () {
7676
},
7777
requireRules: [],
7878
devtool: 'cheap-source-map',
79-
middleware: null
79+
middleware: []
8080
};
8181
}
8282

@@ -187,12 +187,12 @@ var Config = function () {
187187
key: 'applyMiddleware',
188188
value: function applyMiddleware(mw) {
189189
if (typeof mw === 'function') {
190-
this._config.middleware = mw;
190+
this._config.middleware.push(mw);
191191
}
192192
}
193193
}, {
194-
key: 'getMiddleware',
195-
value: function getMiddleware() {
194+
key: 'getMiddlewares',
195+
value: function getMiddlewares() {
196196
return this._config.middleware;
197197
}
198198
}, {

src/models/Config.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class Config {
7272
},
7373
requireRules: [],
7474
devtool: 'cheap-source-map',
75-
middleware: null
75+
middleware: []
7676
};
7777
}
7878

@@ -169,11 +169,11 @@ class Config {
169169

170170
applyMiddleware(mw) {
171171
if (typeof mw === 'function') {
172-
this._config.middleware = mw;
172+
this._config.middleware.push(mw);
173173
}
174174
}
175175

176-
getMiddleware() {
176+
getMiddlewares() {
177177
return this._config.middleware;
178178
}
179179

0 commit comments

Comments
 (0)