electron
Main Preload Renderer

일렉트론의 main 프로세스, renderer 프로세스, preload 스크립트

프로레스 모델 분리

  • 크게 main 프로세스renderer 프로세스 두 가지 유형의 프로세스가 존재

Main

  • 일렉트론 앱에는 필수적으로 단일 main 프로세스가 존재함
  • 모든 Node.js API 를 사용할 수 있음
  • BrowserWindow 모듈을 사용해 window 를 만들고 관리하는게 주 목적
  • BrowserWindow 인스턴스가 제거되면 해당 renderer 프로세스도 종료된다
  • app 모듈을 통해서 어플리케이션의 생명 주기를 제어한다

Renderer

  • renderer 프로세스는 웹 컨텐츠를 렌더링하는 역할을 한다
  • 일렉트론 앱은 각 BrowserWindow에 대해 별도의 renderer 프로세스를 생성
  • 보안 이유로 Node.js 를 바로 사용할 수 없다

Preload 스크립트

  • 웹 컨텐츠가 로드되기 전에 렌더러 프로세스에서 실행되는 코드가 포함되어 있다
  • BrowserWindow 생성자webPreferences 옵션을 통해 main 프로세스에 preload 스크립트를 연결할 수 있다
  • preload 스크립트전역 window 인터페이스renderer와 공유한다
  • contextIsolation 기본값 때문에 preload 스크립트에서 window로 변수를 직접 연결할 수 없다
  • 컨텍스트 격리(Context Isolation)는 preload 스크립트와 일렉트론의 내부 로직이 webContents에 로드된 웹 사이트에 별도의 컨텍스트에서 실행되도록 하는 기능이다
  • 웹 사이트가 일렉트론 내부 또는 preload 스크립트에 접근하지 못하도록 하기 때문에 보안 목적으로 중요하다
  • 컨텍스트 격리를 통해 preload 스크립트 내 권한을 가진 API가 웹 컨텐츠 코드로 유출되지 않도록 한다.

프로세스 간 통신

  • 프로세스 간 통신을 위해 **IPC(Inter-Process Communication)**를 사용한다