일렉트론의 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)**를 사용한다