控制器
和大多数框架一样,接收前端请求,组织参数及调用 Service 来处理业务。(非单例)
它是前端渲染层访问的入口,不建议在其它业务层调用。
流程
前端->(IPAC 通信)->控制器->Service->数据库
示例
js
const { Controller } = require("ee-core");
const Services = require("ee-core/services");
/**
* 示例控制器
* @class
*/
class ExampleController extends Controller {
constructor(ctx) {
super(ctx);
}
/**
* 所有方法接收两个参数
* @param args 前端传的参数
* @param event - ipc通信时才有值。详情见:控制器文档
*/
/**
* test
*/
async test(args, event) {
// 前端参数
const params = args;
// 调用service
const result = await Services.get("example").test("electron");
// 主动向前端发请求
// channel 前端ipc.on(),监听的路由
const channel = "controller.example.something";
// IpcMainInvokeEvent
event.reply(channel, { age: 21 });
// IpcMainEvent
event.sender.send(`${channel}`, data);
// 返回数据
const data = {};
return data;
}
}
ctx
全局 app 对象,等于控制器的 this.app
args
前端传的参数
event
ipc 通信时才有值,且值为动态对象;
前端使用 invoke()
方法时,event 等于 IpcMainInvokeEvent 前端使用 send()/sendSync()
方法时,event 等于 IpcMainEvent 说明如下:
event - IpcMainInvokeEvent
前端使用 invoke()
方法时,event == IpcMainInvokeEvent
event - IpcMainEvent
前端使用 send()/sendSync() 方法时,event == IpcMainEvent