跳转到主文档

渲染进程注册服务

在渲染进程中,注册的服务,一般有如下两种场景:

  • 注册服务,供主进程访问。
  • 注册服务,供渲染进程(webview)访问。

两者注册的服务内容不一样,面向的访问对象也不一样。

注册服务,供主进程访问

这种场景下,我们通过 winService 进行注册服务。

实现服务内容

services/index.ts
export const getPageLocation = () => {
return window.location.href;
}

注册服务

xx/xx.tsx(渲染进程)
// 渲染进程中
import { winService } from '@modern-js/runtime/electron-render';
import * as services from './services';
...
winService.registerServices(services);

主进程中访问服务

electron/services/index.ts(主进程)
// 主进程中

import { winService } from '@modern-js/runtime/electron-main';

export const getPageLocationOfMainWindow = () => {
return winService.callBrowserWindow('getPageLocation');
}

注册服务,供渲染进程(webview)访问

这种场景下,我们通过 webviewService 进行注册服务。

实现服务内容

services/index.ts
export const getWindowName = () => {
return 'main';
}

注册服务

xx/xx.tsx(渲染进程)
// 渲染进程中
import { webviewService } from '@modern-js/runtime/electron-render';
import * as services from './services';
...
webviewService.registerServices(services);

webview 进程中访问服务

xx/xx.tsx(webview 进程)
// webview 进程中

import webviewBridge from '@modern-js/runtime/electron-webview';
...

webviewBridge.callBrowserWindow('getWindowName');