astroboy
Version:
Astroboy(阿童木)is a Nodejs SFB(Separation of Front and Back ends) framework, built on koa2.
45 lines • 1.68 kB
JavaScript
;
const path = require("path");
const lodash = require("lodash");
const Loader_1 = require("../core/Loader");
const util_1 = require("../core/lib/util");
class AstroboyMiddlewareLoader extends Loader_1.Loader {
load() {
// 加载中间件配置
let middlewareConfig = {};
this.globDirs(this.config.configPattern || [], entries => {
entries.forEach(entry => {
middlewareConfig = lodash.merge(middlewareConfig, require(entry));
});
});
this.app.middlewareConfig = middlewareConfig;
// 加载中间件
let middlewares = {};
this.globDirs(this.config.pattern || [], entries => {
entries.forEach(entry => {
const key = this.resolveExtensions(path.basename(entry));
middlewares[key] = require(entry);
});
});
this.app.middlewares = middlewares;
// 生成中间件加载顺序
let middlewareQueue = [];
Object.keys(middlewareConfig).forEach(item => {
middlewareQueue.push(Object.assign({
priority: 300,
name: item,
}, middlewareConfig[item]));
});
middlewareQueue = middlewareQueue
.filter(item => {
return item.enable === true;
})
.sort((a, b) => {
return a.priority - b.priority;
});
this.app.middlewareQueue = middlewareQueue;
util_1.outputJsonSync(`${this.app.ROOT_PATH}/run/middlewares.json`, middlewareQueue);
}
}
module.exports = AstroboyMiddlewareLoader;
//# sourceMappingURL=AstroboyMiddlewareLoader.js.map