自定义 EggJS 框架接入
在 Midway 体系中,我们通过 @midwayjs/web
,支持了 EggJS 作为上层框架,并将 Web 层传统的控制器、服务等分层,以及依赖注入带到了 EggJS 体系。
在社区中,有不少公司已经基于 EggJS 封装了自己的插件和框架,如果这个时候基于 MidwayJS 需要重写原有的框架体系,就显得很不切实际。为此,Midway 开发了一套让 EggJS 上层框架快速接入 Midway 体系,使用到 Midway 依赖注入能力的方式。
上层框架要求
我们以一个名为 fake-egg
的上层框架举例。
EggJS 的上层框架,按照文档会有一些要求,会导出一些固定的属性,比如 Application
、 Agent
、 AppWorkerLoader
以及 AgentWorkerLoader
这四个属性,这四个属性必须导出,示例如下。
'use strict';
const egg = require('egg');
const framework = {};
/**
* @member {Application} Egg#Application
* @since 1.0.0
*/
framework.Application = require('./lib/application');
/**
* @member {Agent} Egg#Agent
* @since 1.0.0
*/
framework.Agent = require('./lib/agent');
/**
* @member {Agent} Egg#AppWorkerLoader
* @since 1.0.0
*/
framework.AppWorkerLoader = require('./lib/core/loader/app_worker_loader');
/**
* @member {Agent} Egg#AgentWorkerLoader
* @since 1.0.0
*/
framework.AgentWorkerLoader = require('./lib/core/loader/agent_worker_loader');
module.exports = exports = Object.assign(egg, framework);