Electron 1.0에서 예정된 API 변경 사항
Electron의 시작은 Atom-Shell이라는 이름으로 거슬러 올라간다. 그때부터 우리는 Chromium의 컨텐츠 모듈과 네이티브 GUI 컴포넌트를 위한 크로스 플랫폼 JavaScript API를 제공하기 위해 다양한 실험을 해왔다. 초기 API는 매우 자연스럽게 발전했으며, 시간이 지나면서 초기 설계를 개선하기 위해 여러 변경을 가했다.
이제 Electron이 1.0 릴리즈를 준비하면서, 마지막으로 남은 API 세부 사항을 정리할 기회를 잡고자 한다. 아래 설명된 변경 사항은 0.35.x 버전에 포함되며, 기존 API는 폐기 예정 경고를 표시한다. 이를 통해 다가오는 1.0 릴리즈를 대비할 수 있다. Electron 1.0은 몇 달 후에 출시될 예정이므로, 이 변경 사항이 주요 변경으로 적용되기 전까지 여유 시간이 있다.
사용 중단 경고
기본적으로, 사용 중단된 API를 사용할 경우 경고 메시지가 표시된다. 이 경고를 끄려면 process.noDeprecation
을 true
로 설정하면 된다. 사용 중단된 API 사용의 출처를 추적하려면, process.throwDeprecation
을 true
로 설정해 경고 대신 예외를 발생시킬 수 있다. 또는 process.traceDeprecation
을 true
로 설정해 사용 중단된 API의 호출 스택을 출력할 수도 있다.
내장 모듈 사용의 새로운 방식
이제 내장 모듈은 독립적인 모듈로 분리되지 않고 하나의 모듈로 그룹화되어 있어 다른 모듈과의 충돌 없이 사용할 수 있다:
var app = require('electron').app;
var BrowserWindow = require('electron').BrowserWindow;
이전 방식인 require('app')
은 하위 호환성을 위해 여전히 지원되지만, 이를 끌 수도 있다:
require('electron').hideInternalModules();
require('app'); // 에러 발생.
remote
모듈을 더 쉽게 사용하는 방법
내장 모듈 사용 방식이 변경되면서, 렌더러 프로세스에서 메인 프로세스 측 모듈을 더 쉽게 사용할 수 있게 되었다. 이제 remote
의 속성에 직접 접근하여 사용할 수 있다:
// 새로운 방식
var app = require('electron').remote.app;
var BrowserWindow = require('electron').remote.BrowserWindow;
기존의 긴 require 체인을 사용하는 대신:
// 기존 방식
var app = require('electron').remote.require('app');
var BrowserWindow = require('electron').remote.require('BrowserWindow');
ipc
모듈 분리
ipc
모듈은 메인 프로세스와 렌더러 프로세스 양쪽에 존재했지만, 각각의 API가 달라서 초보 사용자에게 혼란을 주었다. 혼동을 피하기 위해 메인 프로세스의 모듈은 ipcMain
으로, 렌더러 프로세스의 모듈은 ipcRenderer
로 이름을 바꿨다:
// 메인 프로세스에서
var ipcMain = require('electron').ipcMain;
// 렌더러 프로세스에서
var ipcRenderer = require('electron').ipcRenderer;
또한 ipcRenderer
모듈에서는 메시지를 받을 때 ipcMain
모듈과 동일한 방식으로 처리할 수 있도록 event
객체를 추가했다:
ipcRenderer.on('message', function (event) {
console.log(event);
});
BrowserWindow
옵션 표준화
기존 BrowserWindow
옵션은 다른 API의 옵션과 스타일이 달랐으며, 이름에 -
가 포함되어 있어 JavaScript에서 사용하기 다소 불편했다. 이제는 전통적인 JavaScript 네이밍 컨벤션에 맞춰 표준화되었다:
new BrowserWindow({ minWidth: 800, minHeight: 600 });
DOM 규칙에 맞춘 API 이름 변경
Electron의 API 이름은 원래 모든 API에 카멜 케이스(camelCase)를 사용했다. 예를 들어 Url
을 URL
로 표기하는 방식이다. 하지만 DOM은 자체적인 규칙을 가지고 있으며, URL
을 Url
보다 선호하고 ID
대신 Id
를 사용한다. 이러한 DOM 스타일에 맞추기 위해 다음과 같은 API 이름 변경 작업을 진행했다:
Url
을URL
로 변경Csp
을CSP
로 변경
Electron v0.35.0을 사용할 때 이러한 변경 사항으로 인해 많은 부분에서 더 이상 사용되지 않는(deprecated) API를 발견할 수 있다. 이를 해결하는 간단한 방법은 모든 Url
인스턴스를 URL
로 바꾸는 것이다.
Tray
이벤트 이름 변경
Tray
의 이벤트 이름 스타일이 다른 모듈과 조금 달랐기 때문에, 일관성을 유지하기 위해 이름을 변경했다.
clicked
는click
으로 변경double-clicked
는double-click
으로 변경right-clicked
는right-click
으로 변경