Skip to content

控制器

和大多数框架一样,接收前端请求,组织参数及调用 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