📝 Fix typos
[ci skip]
This commit is contained in:
parent
8d08c3241d
commit
c8e77f47ab
20 changed files with 60 additions and 60 deletions
|
@ -69,7 +69,7 @@ Electron에 대해 자주 묻는 질문이 있습니다. 이슈를 생성하기
|
|||
* [webContents](api/web-contents.md)
|
||||
* [Tray](api/tray.md)
|
||||
|
||||
### 랜더러 프로세스에서 사용할 수 있는 모듈 (웹 페이지):
|
||||
### 렌더러 프로세스에서 사용할 수 있는 모듈 (웹 페이지):
|
||||
|
||||
* [desktopCapturer](api/desktop-capturer.md)
|
||||
* [ipcRenderer](api/ipc-renderer.md)
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
// 메인 프로세스에서
|
||||
const BrowserWindow = require('electron').BrowserWindow;
|
||||
|
||||
// 또는 랜더러 프로세스에서
|
||||
// 또는 렌더러 프로세스에서
|
||||
const BrowserWindow = require('electron').remote.BrowserWindow;
|
||||
|
||||
var win = new BrowserWindow({ width: 800, height: 600, show: false });
|
||||
|
@ -159,7 +159,7 @@ win.show();
|
|||
기본값은 `false`입니다.
|
||||
* `experimentalCanvasFeatures` Boolean - Chrome의 실험적인 캔버스(canvas) 기능을
|
||||
활성화합니다. 기본값은 `false`입니다.
|
||||
* `directWrite` Boolean - Windows에서 폰트 랜더링을 위해 DirectWrite를
|
||||
* `directWrite` Boolean - Windows에서 폰트 렌더링을 위해 DirectWrite를
|
||||
사용하는지를 지정합니다. 기본값은 `true`입니다.
|
||||
* `blinkFeatures` String - `CSSVariables,KeyboardEventKey`같은 `,`로 구분된
|
||||
기능 문자열들의 리스트입니다. 지원하는 전체 기능 문자열들은
|
||||
|
|
|
@ -121,9 +121,9 @@ SSL 암호화를 비활성화할 대상 목록을 지정합니다. (`,`로 구
|
|||
|
||||
## --disable-renderer-backgrounding
|
||||
|
||||
Chromium이 랜더러 프로세스의 보이지 않는 페이지의 우선순위를 낮추는 것을 방지합니다.
|
||||
Chromium이 렌더러 프로세스의 보이지 않는 페이지의 우선순위를 낮추는 것을 방지합니다.
|
||||
|
||||
이 플래그는 전역적이며 모든 랜더러 프로세스에 적용됩니다. 만약 하나의 윈도우창에만
|
||||
이 플래그는 전역적이며 모든 렌더러 프로세스에 적용됩니다. 만약 하나의 윈도우창에만
|
||||
스로틀링을 비활성화하고 싶다면 [조용한 오디오를 재생하는][play-silent-audio] 핵을 사용할
|
||||
수 있습니다.
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ crashReporter.start({
|
|||
|
||||
**참고:** OS X에선 Windows와 Linux의 `breakpad`와 달리 새로운 `crashpad`
|
||||
클라이언트를 사용합니다. 오류 수집 기능을 활성화 시키려면 오류를 수집하고 싶은 메인
|
||||
프로세스나 랜더러 프로세스에서 `crashReporter.start` 메서드를 호출하여 `crashpad`를
|
||||
프로세스나 렌더러 프로세스에서 `crashReporter.start` 메서드를 호출하여 `crashpad`를
|
||||
초기화해야 합니다.
|
||||
|
||||
### `crashReporter.getLastCrashReport()`
|
||||
|
|
|
@ -12,7 +12,7 @@ const dialog = require('electron').dialog;
|
|||
console.log(dialog.showOpenDialog({ properties: [ 'openFile', 'openDirectory', 'multiSelections' ]}));
|
||||
```
|
||||
|
||||
대화 상자는 Electron의 메인 스레드에서 열립니다. 만약 랜더러 프로세스에서 대화 상자
|
||||
대화 상자는 Electron의 메인 스레드에서 열립니다. 만약 렌더러 프로세스에서 대화 상자
|
||||
객체를 사용하고 싶다면, `remote`를 통해 접근하는 방법을 고려해야 합니다:
|
||||
|
||||
```javascript
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
# ipcMain
|
||||
|
||||
`ipcMain` 모듈은 [EventEmitter](https://nodejs.org/api/events.html) 클래스의
|
||||
인스턴스입니다. 메인 프로세스에서 사용하면, 랜더러 프로세스(웹 페이지)에서 전달된
|
||||
동기, 비동기 메시지를 주고 받는 방법을 제공합니다. 랜더러 프로세스에서 메시지를 전달하면
|
||||
인스턴스입니다. 메인 프로세스에서 사용하면, 렌더러 프로세스(웹 페이지)에서 전달된
|
||||
동기, 비동기 메시지를 주고 받는 방법을 제공합니다. 렌더러 프로세스에서 메시지를 전달하면
|
||||
이 모듈을 통해 메시지를 받을 수 있습니다.
|
||||
|
||||
## 메시지 전송
|
||||
|
||||
물론 메시지를 받는 것 말고도 메인 프로세스에서 랜더러 프로세스로 보내는 것도 가능합니다.
|
||||
물론 메시지를 받는 것 말고도 메인 프로세스에서 렌더러 프로세스로 보내는 것도 가능합니다.
|
||||
자세한 내용은 [webContents.send][web-contents-send]를 참고하세요.
|
||||
|
||||
* 메시지를 전송할 때 이벤트 이름은 `channel`이 됩니다.
|
||||
* 메시지에 동기로 응답할 땐 반드시 `event.returnValue`를 설정해야 합니다.
|
||||
* 메시지를 비동기로 응답할 땐 `event.sender.send(...)` 메서드를 사용할 수 있습니다.
|
||||
|
||||
다음 예제는 랜더러 프로세스와 메인 프로세스간에 메시지를 전달하고 받는 예제입니다:
|
||||
다음 예제는 렌더러 프로세스와 메인 프로세스간에 메시지를 전달하고 받는 예제입니다:
|
||||
|
||||
```javascript
|
||||
// 메인 프로세스
|
||||
|
@ -31,7 +31,7 @@ ipcMain.on('synchronous-message', function(event, arg) {
|
|||
```
|
||||
|
||||
```javascript
|
||||
// 랜더러 프로세스 (웹 페이지)
|
||||
// 렌더러 프로세스 (웹 페이지)
|
||||
const ipcRenderer = require('electron').ipcRenderer;
|
||||
console.log(ipc.sendSync('synchronous-message', 'ping')); // "pong" 출력
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# ipcRenderer
|
||||
|
||||
`ipcRenderer` 모듈은 [EventEmitter](https://nodejs.org/api/events.html) 클래스의
|
||||
인스턴스입니다. 랜더러 프로세스에서 메인 프로세스로 동기/비동기 메시지를 주고 받는
|
||||
인스턴스입니다. 렌더러 프로세스에서 메인 프로세스로 동기/비동기 메시지를 주고 받는
|
||||
방법을 제공합니다. 또한 메인 프로세스로부터 받은 메시지에 응답할 수도 있습니다.
|
||||
|
||||
[ipcMain](ipc-main.md)에서 코드 예제를 확인할 수 있습니다.
|
||||
|
@ -71,7 +71,7 @@
|
|||
메인 프로세스는 `ipcMain` 모듈을 통해 `channel` 이벤트를 리스닝 할 수 있고,
|
||||
`event.returnValue`로 회신 할 수 있습니다.
|
||||
|
||||
**참고:** 동기 메서드는 모든 랜더러 프로세스의 작업을 일시 중단시킵니다. 사용 목적이
|
||||
**참고:** 동기 메서드는 모든 렌더러 프로세스의 작업을 일시 중단시킵니다. 사용 목적이
|
||||
확실하지 않다면 사용하지 않는 것이 좋습니다.
|
||||
|
||||
### `ipcRenderer.sendToHost(channel[, arg1][, arg2][, ...])`
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Menu
|
||||
|
||||
`menu` 클래스는 어플리케이션 메뉴와 [컨텍스트 메뉴](https://developer.mozilla.org/ko/docs/Mozilla/Tech/XUL/PopupGuide/ContextMenus)를
|
||||
만들 때 사용됩니다. 이 모듈은 메인 프로세스용 모듈이지만 `remote` 모듈을 통해 랜더러
|
||||
만들 때 사용됩니다. 이 모듈은 메인 프로세스용 모듈이지만 `remote` 모듈을 통해 렌더러
|
||||
프로세스에서도 사용할 수 있습니다.
|
||||
|
||||
각 메뉴는 여러 개의 [메뉴 아이템](menu-item.md)으로 구성되고 서브 메뉴를 가질 수도 있습니다.
|
||||
|
@ -29,7 +29,7 @@ window.addEventListener('contextmenu', function (e) {
|
|||
</script>
|
||||
```
|
||||
|
||||
또 하나의 예를 들자면 다음 예제는 랜더러 프로세스에서 template API를 사용하여
|
||||
또 하나의 예를 들자면 다음 예제는 렌더러 프로세스에서 template API를 사용하여
|
||||
어플리케이션 메뉴를 만듭니다:
|
||||
|
||||
```javascript
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
# remote
|
||||
|
||||
`remote` 모듈은 메인 프로세스와 랜더러 프로세스(웹 페이지) 사이의 inter-process
|
||||
`remote` 모듈은 메인 프로세스와 렌더러 프로세스(웹 페이지) 사이의 inter-process
|
||||
(IPC) 통신을 간단하게 추상화 한 모듈입니다.
|
||||
|
||||
Electron의 메인 프로세스에선 GUI와 관련 있는(`dialog`, `menu`등) 모듈만 사용할 수
|
||||
있습니다. 랜더러 프로세스에서 이러한 모듈들을 사용하려면 `ipc` 모듈을 통해 메인
|
||||
있습니다. 렌더러 프로세스에서 이러한 모듈들을 사용하려면 `ipc` 모듈을 통해 메인
|
||||
프로세스와 inter-process 통신을 해야 합니다. 또한, `remote` 모듈을 사용하면
|
||||
inter-process 통신을 하지 않고도 간단한 API를 통해 직접 메인 프로세스의 모듈과
|
||||
메서드를 사용할 수 있습니다. 이 개념은 Java의 [RMI][rmi]와 비슷합니다.
|
||||
|
||||
다음 예제는 랜더러 프로세스에서 브라우저 창을 만드는 예제입니다:
|
||||
다음 예제는 렌더러 프로세스에서 브라우저 창을 만드는 예제입니다:
|
||||
|
||||
```javascript
|
||||
const remote = require('electron').remote;
|
||||
|
@ -19,7 +19,7 @@ var win = new BrowserWindow({ width: 800, height: 600 });
|
|||
win.loadURL('https://github.com');
|
||||
```
|
||||
|
||||
**참고:** 반대로 메인 프로세스에서 랜더러 프로세스에 접근 하려면 [webContents.executeJavascript](web-contents.md#webcontentsexecutejavascriptcode-usergesture)
|
||||
**참고:** 반대로 메인 프로세스에서 렌더러 프로세스에 접근 하려면 [webContents.executeJavascript](web-contents.md#webcontentsexecutejavascriptcode-usergesture)
|
||||
메서드를 사용하면 됩니다.
|
||||
|
||||
## Remote 객체
|
||||
|
@ -30,8 +30,8 @@ win.loadURL('https://github.com');
|
|||
동기형 inter-process 메시지를 보냅니다.
|
||||
|
||||
위의 예제에서 사용한 두 `BrowserWindow`와 `win`은 remote 객체입니다. 그리고
|
||||
`new BrowserWindow`이 생성하는 `BrowserWindow` 객체는 랜더러 프로세스에서 생성되지
|
||||
않습니다. 대신에 이 `BrowserWindow` 객체는 메인 프로세스에서 생성되며 랜더러
|
||||
`new BrowserWindow`이 생성하는 `BrowserWindow` 객체는 렌더러 프로세스에서 생성되지
|
||||
않습니다. 대신에 이 `BrowserWindow` 객체는 메인 프로세스에서 생성되며 렌더러
|
||||
프로세스에 `win` 객체와 같이 이에 대응하는 remote 객체를 반환합니다.
|
||||
|
||||
참고로 remote를 통해선 [enumerable 속성](https://developer.mozilla.org/ko/docs/Web/JavaScript/Enumerability_and_ownership_of_properties)을
|
||||
|
@ -39,11 +39,11 @@ win.loadURL('https://github.com');
|
|||
|
||||
## Remote 객체의 생명 주기
|
||||
|
||||
Electron은 랜더러 프로세스의 remote 객체가 살아있는 한(다시 말해서 GC(garbage
|
||||
Electron은 렌더러 프로세스의 remote 객체가 살아있는 한(다시 말해서 GC(garbage
|
||||
collection)가 일어나지 않습니다) 대응하는 메인 프로세스의 객체는 릴리즈되지 않습니다.
|
||||
Remote 객체가 GC 되려면 대응하는 메인 프로세스 내부 객체의 참조가 해제되어야만 합니다.
|
||||
|
||||
만약 remote 객체가 랜더러 프로세스에서 누수가 생겼다면 (예시: 맵에 저장하고 할당
|
||||
만약 remote 객체가 렌더러 프로세스에서 누수가 생겼다면 (예시: 맵에 저장하고 할당
|
||||
해제하지 않음) 대응하는 메인 프로세스의 객체도 누수가 생깁니다. 그래서 remote 객체를
|
||||
사용할 땐 메모리 누수가 생기지 않도록 매우 주의해서 사용해야 합니다.
|
||||
|
||||
|
@ -51,14 +51,14 @@ Remote 객체가 GC 되려면 대응하는 메인 프로세스 내부 객체의
|
|||
|
||||
## 메인 프로세스로 콜백 넘기기
|
||||
|
||||
메인 프로세스의 코드는 `remote` 모듈을 통해 랜더러 프로세스가 전달하는 콜백 함수를
|
||||
메인 프로세스의 코드는 `remote` 모듈을 통해 렌더러 프로세스가 전달하는 콜백 함수를
|
||||
받을 수 있습니다. 하지만 이 작업은 반드시 주의를 기울여 사용해야 합니다.
|
||||
|
||||
첫째, 데드락을 피하기 위해 메인 프로세스로 전달된 콜백들은 비동기로 호출됩니다. 이러한
|
||||
이유로 메인 프로세스로 전달된 콜백들의 반환 값을 내부 함수에서 언제나 정상적으로 받을
|
||||
것이라고 예측해선 안됩니다.
|
||||
|
||||
예를 들어 메인 프로세스에서 `Array.map` 같은 메서드를 사용할 때 랜더러 프로세스에서
|
||||
예를 들어 메인 프로세스에서 `Array.map` 같은 메서드를 사용할 때 렌더러 프로세스에서
|
||||
전달된 함수를 사용해선 안됩니다:
|
||||
|
||||
```javascript
|
||||
|
@ -75,7 +75,7 @@ exports.withLocalCallback = function() {
|
|||
```
|
||||
|
||||
```javascript
|
||||
// 랜더러 프로세스
|
||||
// 렌더러 프로세스
|
||||
var mapNumbers = require("remote").require("./mapNumbers");
|
||||
|
||||
var withRendererCb = mapNumbers.withRendererCallback(function(x) {
|
||||
|
@ -87,7 +87,7 @@ var withLocalCb = mapNumbers.withLocalCallback()
|
|||
console.log(withRendererCb, withLocalCb) // [true, true, true], [2, 3, 4]
|
||||
```
|
||||
|
||||
보다시피 랜더러 콜백의 동기 반환 값은 예상되지 않은 처리입니다.
|
||||
보다시피 렌더러 콜백의 동기 반환 값은 예상되지 않은 처리입니다.
|
||||
그리고 메인 프로세스에서 처리한 함수의 반환 값과 일치하지 않습니다.
|
||||
|
||||
둘째, 콜백들은 메인 프로세스로 전달, 호출된 이후에도 자동으로 함수의 참조가 릴리즈 되지
|
||||
|
@ -113,9 +113,9 @@ remote.getCurrentWindow().on('close', function() {
|
|||
설상가상으로 이전에 설치된 콜백의 콘텍스트가 릴리즈 되고 난 후(예: 페이지 새로고침)
|
||||
`close` 이벤트가 발생하면 예외가 발생하고 메인 프로세스가 작동 중지됩니다.
|
||||
|
||||
이러한 문제를 피하려면 랜더러 프로세스에서 메인 프로세스로 넘긴 함수의 참조를 사용 후
|
||||
이러한 문제를 피하려면 렌더러 프로세스에서 메인 프로세스로 넘긴 함수의 참조를 사용 후
|
||||
확실하게 제거해야 합니다. 작업 후 이벤트 콜백을 포함하여 책임 있게 함수의 참조를
|
||||
제거하거나 메인 프로세스에서 랜더러 프로세스가 종료될 때 내부적으로 함수 참조를
|
||||
제거하거나 메인 프로세스에서 렌더러 프로세스가 종료될 때 내부적으로 함수 참조를
|
||||
제거하도록 설계해야 합니다.
|
||||
|
||||
## 메인 프로세스의 빌트인 모듈에 접근
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
`screen`은 [EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter)를
|
||||
상속 받았습니다.
|
||||
|
||||
**참고:** 랜더러 / DevTools에선 이미 DOM 속성이 `window.screen`을 가지고 있으므로
|
||||
**참고:** 렌더러 / DevTools에선 이미 DOM 속성이 `window.screen`을 가지고 있으므로
|
||||
`screen = require('screen')` 형식으로 모듈을 사용할 수 없습니다. 아래의 예제와 같이
|
||||
`electronScreen` 같은 이름으로 모듈 이름을 대체하여 사용해야 합니다.
|
||||
|
||||
|
|
|
@ -5,12 +5,12 @@ node 모듈을 완벽하게 지원합니다. ([네이티브 모듈](../tutorial/
|
|||
포함)
|
||||
|
||||
또한 Electron은 네이티브 데스크톱 어플리케이션을 개발 할 수 있도록 추가적인 built-in
|
||||
모듈을 제공합니다. 몇몇 모듈은 메인 프로세스에서만 사용할 수 있고 어떤 모듈은 랜더러
|
||||
모듈을 제공합니다. 몇몇 모듈은 메인 프로세스에서만 사용할 수 있고 어떤 모듈은 렌더러
|
||||
프로세스(웹 페이지)에서만 사용할 수 있습니다. 또한 두 프로세스 모두 사용할 수 있는
|
||||
모듈도 있습니다.
|
||||
|
||||
기본적인 규칙으로 [GUI][gui]와 저 수준 시스템에 관련된 모듈들은 오직 메인
|
||||
프로세스에서만 사용할 수 있습니다. [메인 프로세스 vs. 랜더러 프로세스](../tutorial/quick-start.md#메인-프로세스)
|
||||
프로세스에서만 사용할 수 있습니다. [메인 프로세스 vs. 렌더러 프로세스](../tutorial/quick-start.md#메인-프로세스)
|
||||
컨셉에 익숙해야 모듈을 다루기 쉬우므로 관련 문서를 읽어 보는 것을 권장합니다.
|
||||
|
||||
메인 프로세스 스크립트는 일반 Node.js 스크립트와 비슷합니다:
|
||||
|
@ -28,7 +28,7 @@ app.on('ready', function() {
|
|||
});
|
||||
```
|
||||
|
||||
랜더러 프로세스도 예외적인 node module들을 사용할 수 있다는 점을 제외하면 일반 웹
|
||||
렌더러 프로세스도 예외적인 node module들을 사용할 수 있다는 점을 제외하면 일반 웹
|
||||
페이지와 크게 다를게 없습니다:
|
||||
|
||||
```html
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# webFrame
|
||||
|
||||
`web-frame` 모듈은 현재 웹 페이지의 랜더링 상태를 설정 할 수 있도록 관련 유틸리티를
|
||||
`web-frame` 모듈은 현재 웹 페이지의 렌더링 상태를 설정 할 수 있도록 관련 유틸리티를
|
||||
제공하는 모듈입니다.
|
||||
|
||||
다음 예제는 현재 페이지를 200% 줌 합니다:
|
||||
|
|
|
@ -149,7 +149,7 @@ API를 사용할 수 있습니다. 이를 지정하면 내부에서 로우레벨
|
|||
동일한 세션을 공유할 수 있도록 할 수 있습니다. 만약 `partition`이 지정되지 않으면 앱의
|
||||
기본 세션을 사용합니다.
|
||||
|
||||
이 값은 첫 탐색 이전에만 지정할 수 있습니다. 즉. 작동중인 랜더러 프로세스의 세션은
|
||||
이 값은 첫 탐색 이전에만 지정할 수 있습니다. 즉. 작동중인 렌더러 프로세스의 세션은
|
||||
변경할 수 없습니다. 이후 이 값을 바꾸려고 시도하면 DOM 예외를 발생시킵니다.
|
||||
|
||||
### `allowpopups`
|
||||
|
@ -263,7 +263,7 @@ Webview에 웹 페이지 `url`을 로드합니다. `url`은 `http://`, `file://`
|
|||
|
||||
### `<webview>.isCrashed()`
|
||||
|
||||
랜더러 프로세스가 크래시 됬는지 확인합니다.
|
||||
렌더러 프로세스가 크래시 됬는지 확인합니다.
|
||||
|
||||
### `<webview>.setUserAgent(userAgent)`
|
||||
|
||||
|
@ -423,8 +423,8 @@ Webview 페이지를 PDF 형식으로 인쇄합니다.
|
|||
* `channel` String
|
||||
* `args` (optional)
|
||||
|
||||
`channel`을 통해 랜더러 프로세스로 비동기 메시지를 보냅니다. 또한 `args`를 지정하여
|
||||
임의의 인자를 보낼 수도 있습니다. 랜더러 프로세스는 `ipcRenderer` 모듈의 `channel`
|
||||
`channel`을 통해 렌더러 프로세스로 비동기 메시지를 보냅니다. 또한 `args`를 지정하여
|
||||
임의의 인자를 보낼 수도 있습니다. 렌더러 프로세스는 `ipcRenderer` 모듈의 `channel`
|
||||
이벤트로 이 메시지를 받아 처리할 수 있습니다.
|
||||
|
||||
예제는 [webContents.send](web-contents.md#webcontentssendchannel-args)를 참고하세요.
|
||||
|
@ -696,7 +696,7 @@ ipcRenderer.on('ping', function() {
|
|||
|
||||
### Event: 'crashed'
|
||||
|
||||
랜더러 프로세스가 크래시 되었을 때 발생하는 이벤트입니다.
|
||||
렌더러 프로세스가 크래시 되었을 때 발생하는 이벤트입니다.
|
||||
|
||||
### Event: 'gpu-crashed'
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ Electron
|
|||
├── atom - C++ 소스 코드.
|
||||
| ├── app - 시스템 엔트리 코드.
|
||||
| ├── browser - 주 윈도우를 포함한 프론트엔드, UI, 그리고 메인 프로세스에 관련된
|
||||
| | 코드와 랜더러 및 웹 페이지 관리 관련 코드.
|
||||
| | 코드와 렌더러 및 웹 페이지 관리 관련 코드.
|
||||
| | ├── ui - 서로 다른 플랫폼에 대한 UI 관련 구현 코드.
|
||||
| | | ├── cocoa - Cocoa 특정 소스 코드.
|
||||
| | | ├── gtk - GTK+ 특정 소스 코드.
|
||||
|
@ -22,9 +22,9 @@ Electron
|
|||
| | ├── net - 네트워킹 관련 코드.
|
||||
| | ├── mac - Mac 특정 Objective-C 소스 코드.
|
||||
| | └── resources - 아이콘들, 플랫폼 종속성 파일들, 기타 등등..
|
||||
| ├── renderer - 랜더러 프로세스에서 작동하는 코드.
|
||||
| | └── api - 랜더러 프로세스 API의 구현.
|
||||
| └── common - 메인과 랜더러 프로세스에서 모두 사용하는 코드, 몇가지 유틸리티
|
||||
| ├── renderer - 렌더러 프로세스에서 작동하는 코드.
|
||||
| | └── api - 렌더러 프로세스 API의 구현.
|
||||
| └── common - 메인과 렌더러 프로세스에서 모두 사용하는 코드, 몇가지 유틸리티
|
||||
| 함수들이 포함되어 있고 node의 메시지 루프와 Chromium의 메시지 루프를 통합.
|
||||
| └── api - 공통 API 구현들, 기초 Electron 빌트-인 모듈들.
|
||||
├── chromium_src - Chromium에서 복사하여 가져온 소스코드.
|
||||
|
@ -33,9 +33,9 @@ Electron
|
|||
├── lib - JavaScript 소스 코드.
|
||||
| ├── browser - Javascript 메인 프로세스 초기화 코드.
|
||||
| | └── api - Javascript API 구현 코드.
|
||||
| ├── common - 메인과 랜더러 프로세스에서 모두 사용하는 JavaScript
|
||||
| ├── common - 메인과 렌더러 프로세스에서 모두 사용하는 JavaScript
|
||||
| | └── api - Javascript API 구현 코드.
|
||||
| └── renderer - Javascript 랜더러 프로세스 초기화 코드.
|
||||
| └── renderer - Javascript 렌더러 프로세스 초기화 코드.
|
||||
| └── api - Javascript API 구현 코드.
|
||||
├── spec - 자동화 테스트.
|
||||
├── atom.gyp - Electron의 빌드 규칙.
|
||||
|
|
|
@ -20,13 +20,13 @@ Node.js의 새로운 기능은 보통 V8 업그레이드에서 가져옵니다.
|
|||
|
||||
## 어떻게 웹 페이지 간에 데이터를 공유할 수 있나요?
|
||||
|
||||
두 웹페이지 간에 (랜더러 프로세스) 데이터를 공유하려면 간단히 이미 모든 브라우저에서
|
||||
두 웹페이지 간에 (렌더러 프로세스) 데이터를 공유하려면 간단히 이미 모든 브라우저에서
|
||||
사용할 수 있는 HTML5 API들을 사용하면 됩니다. 가장 좋은 후보는
|
||||
[Storage API][storage], [`localStorage`][local-storage],
|
||||
[`sessionStorage`][session-storage], 그리고 [IndexedDB][indexed-db]가 있습니다.
|
||||
|
||||
또는 Electron에서만 사용할 수 있는 IPC 시스템을 사용하여 메인 프로세스의 global
|
||||
변수에 데이터를 저장한 후 다음과 같이 랜더러 프로세스에서 `remote` 모듈을 사용하여
|
||||
변수에 데이터를 저장한 후 다음과 같이 렌더러 프로세스에서 `remote` 모듈을 사용하여
|
||||
접근할 수 있습니다:
|
||||
|
||||
```javascript
|
||||
|
@ -141,7 +141,7 @@ npm uninstall -g electron
|
|||
|
||||
그런데 여전히 빌트인 모듈이 계속해서 문제를 발생시키는 경우, 아마 모듈을 잘못 사용하고
|
||||
있을 가능성이 큽니다. 예를 들면 `electron.app`은 메인 프로세스에서만 사용할 수 있는
|
||||
모듈이며, 반면 `electron.webFrame` 모듈은 랜더러 프로세스에서만 사용할 수 있는
|
||||
모듈이며, 반면 `electron.webFrame` 모듈은 렌더러 프로세스에서만 사용할 수 있는
|
||||
모듈입니다.
|
||||
|
||||
[memory-management]: https://developer.mozilla.org/ko/docs/Web/JavaScript/Memory_Management
|
||||
|
|
|
@ -18,7 +18,7 @@ Electron 문서를 작성하는 규칙은 다음과 같습니다.
|
|||
추가합니다.
|
||||
- 메서드 헤더는 `code backtick` 으로 표시합니다.
|
||||
- 이벤트 헤더는 한 '따옴표'로 표시합니다.
|
||||
- 리스트를 2 단계 이상 중첩하지 않습니다. (안타깝게도 markdown 랜더러가 이를 지원하지
|
||||
- 리스트를 2 단계 이상 중첩하지 않습니다. (안타깝게도 markdown 렌더러가 이를 지원하지
|
||||
않습니다)
|
||||
- 섹션에 대한 제목을 추가합니다. Events, Class 메서드 그리고 인스턴스 메서드 등
|
||||
- 어떤 '것'의 사용 결과를 설명할 때 '될 것입니다' 형식을 사용하여 설명합니다.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 메인 프로세스 디버깅하기
|
||||
|
||||
브라우저 창의 개발자 도구는 웹 페이지 같은 랜더러 프로세스의 스크립트만 디버깅이
|
||||
브라우저 창의 개발자 도구는 웹 페이지 같은 렌더러 프로세스의 스크립트만 디버깅이
|
||||
가능합니다. 대신 Electron은 메인 프로세스의 디버깅을 위해 `--debug` 과 `--debug-brk`
|
||||
스위치들을 제공합니다.
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ Windows, Linux, OS X 운영체제 모두 기본적으로 어플리케이션에
|
|||
통해 개발자가 편리하게 데스크톱 알림을 사용할 수 있는 기능을 제공합니다. 데스크톱 알림은
|
||||
운영체제의 네이티브 알림 API를 사용하여 표시합니다.
|
||||
|
||||
**참고:** 이 API는 HTML5 API이기 때문에 랜더러 프로세스에서만 사용할 수 있습니다.
|
||||
**참고:** 이 API는 HTML5 API이기 때문에 렌더러 프로세스에서만 사용할 수 있습니다.
|
||||
|
||||
```javascript
|
||||
var myNotification = new Notification('Title', {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 온라인/오프라인 이벤트 감지
|
||||
|
||||
온라인/오프라인 이벤트는 다음 예제와 같이 랜더러 프로세스에서 표준 HTML5 API를 이용하여
|
||||
온라인/오프라인 이벤트는 다음 예제와 같이 렌더러 프로세스에서 표준 HTML5 API를 이용하여
|
||||
구현할 수 있습니다.
|
||||
|
||||
_main.js_
|
||||
|
|
|
@ -16,23 +16,23 @@ Electron은 실행될 때 __메인 프로세스__ 로 불리는 `package.json`
|
|||
호출합니다. 이 스크립트는 메인 프로세스에서 작동합니다. GUI 컴포넌트를 조작하거나 웹
|
||||
페이지 창을 생성할 수 있습니다.
|
||||
|
||||
### 랜더러 프로세스
|
||||
### 렌더러 프로세스
|
||||
|
||||
Electron이 웹페이지를 보여줄 때 Chromium의 multi-processes 구조도 같이 사용됩니다.
|
||||
Electron 프로세스 내에서 작동하는 웹 페이지를 __랜더러 프로세스__ 라고 불립니다.
|
||||
Electron 프로세스 내에서 작동하는 웹 페이지를 __렌더러 프로세스__ 라고 불립니다.
|
||||
|
||||
보통 일반 브라우저의 웹 페이지들은 샌드박스가 적용된 환경에서 작동하며 네이티브
|
||||
리소스에는 접근할 수 없도록 되어 있습니다. 하지만 Electron은 웹 페이지 내에서 Node.js
|
||||
API를 사용하여 low-level 수준으로 운영체제와 상호작용할 수 있습니다.
|
||||
|
||||
### 메인 프로세스와 랜더러 프로세스의 차이점
|
||||
### 메인 프로세스와 렌더러 프로세스의 차이점
|
||||
|
||||
메인 프로세스는 `BrowserWindow` Class를 사용하여 새로운 창을 만들 수 있습니다.
|
||||
`BrowserWindow` 인스턴스는 따로 분리된 프로세스에서 랜더링 되며 이 프로세스를 랜더러
|
||||
프로세스라고 합니다. `BrowserWindow` 인스턴스가 소멸할 때 그 창의 랜더러 프로세스도
|
||||
`BrowserWindow` 인스턴스는 따로 분리된 프로세스에서 렌더링 되며 이 프로세스를 렌더러
|
||||
프로세스라고 합니다. `BrowserWindow` 인스턴스가 소멸할 때 그 창의 렌더러 프로세스도
|
||||
같이 소멸합니다.
|
||||
|
||||
메인 프로세스는 모든 웹 페이지와 랜더러 프로세스를 관리하며 랜더러 프로세스는 각각의
|
||||
메인 프로세스는 모든 웹 페이지와 렌더러 프로세스를 관리하며 렌더러 프로세스는 각각의
|
||||
프로세스에 고립되며 웹 페이지의 작동에만 영향을 끼칩니다.
|
||||
|
||||
웹 페이지 내에선 기본적으로 네이티브 GUI와 관련된 API를 호출할 수 없도록 설계 되어
|
||||
|
@ -40,7 +40,7 @@ API를 사용하여 low-level 수준으로 운영체제와 상호작용할 수
|
|||
리소스를 누수시킬 수 있기 때문입니다. 꼭 웹 페이지 내에서 API를 사용해야 한다면 메인
|
||||
프로세스에서 그 작업을 처리할 수 있도록 메인 프로세스와 통신을 해야 합니다.
|
||||
|
||||
Electron에는 메인 프로세스와 랜더러 프로세스 사이에 통신을 할 수 있도록
|
||||
Electron에는 메인 프로세스와 렌더러 프로세스 사이에 통신을 할 수 있도록
|
||||
[ipc](../api/ipc-renderer.md) 모듈을 제공하고 있습니다.
|
||||
또는 [remote](../api/remote.md) 모듈을 사용하여 RPC 스타일로 통신할 수도 있습니다.
|
||||
또한 FAQ에서 [다양한 객체를 공유하는 방법](share-data)도 소개하고 있습니다.
|
||||
|
|
Loading…
Add table
Reference in a new issue