Merge pull request #3496 from preco21/master
Update as upstream and some fixes
This commit is contained in:
commit
afbceab2ab
13 changed files with 267 additions and 223 deletions
35
README-ko.md
35
README-ko.md
|
@ -8,19 +8,26 @@
|
|||
|
||||
:zap: *프레임워크 이름이 Atom Shell에서 Electron으로 변경되었습니다* :zap:
|
||||
|
||||
Electron 프레임워크는 JavaScript, HTML 그리고 CSS를 사용하여 Cross-Platform 데스크톱 어플리케이션을 개발할 수 있도록 해주는 프레임워크입니다.
|
||||
이 프레임워크는 [Node.js](https://nodejs.org/) 와 [Chromium](http://www.chromium.org)을 기반으로 만들어 졌으며
|
||||
[Atom Editor](https://github.com/atom/atom)에 사용되고 있습니다.
|
||||
Electron 프레임워크는 JavaScript, HTML 그리고 CSS를 사용하여 Cross-Platform 데스크톱
|
||||
어플리케이션을 개발할 수 있도록 해주는 프레임워크입니다. 이 프레임워크는
|
||||
[Node.js](https://nodejs.org/)와 [Chromium](http://www.chromium.org)을 기반으로
|
||||
만들어졌으며 [Atom Editor](https://github.com/atom/atom)에 사용되고 있습니다.
|
||||
|
||||
Electron에 대한 중요한 알림을 받고 싶다면 Twitter에서 [@ElectronJS](https://twitter.com/electronjs)를 팔로우 하세요.
|
||||
Electron에 대한 중요한 알림을 받고 싶다면 Twitter에서
|
||||
[@ElectronJS](https://twitter.com/electronjs)를 팔로우 하세요.
|
||||
|
||||
이 프로젝트는 [기여자 규약 1.2](http://contributor-covenant.org/version/1/2/0/)를 준수합니다. 이 프로젝트에 참여할 때 코드를 유지해야 합니다. 받아들일 수 없는 행위를 발견했을 경우 atom@github.com로 보고 하십시오.
|
||||
이 프로젝트는 [기여자 규약 1.2](http://contributor-covenant.org/version/1/2/0/)을
|
||||
준수합니다. 따라서 이 프로젝트의 개발에 참여하려면 이 계약을 지켜야 합니다.
|
||||
받아들일 수 없는 행위를 발견했을 경우 atom@github.com로 보고 하십시오.
|
||||
|
||||
## 다운로드
|
||||
|
||||
Linux, Windows, OS X 용으로 미리 빌드된 Electron 바이너리와 디버그 심볼이 준비되어 있습니다. [releases](https://github.com/atom/electron/releases) 페이지에서 받아 볼 수 있습니다.
|
||||
Linux, Windows, OS X 용으로 미리 빌드된 Electron 바이너리와 디버그 심볼이 준비되어
|
||||
있습니다. [releases](https://github.com/atom/electron/releases) 페이지에서
|
||||
받아 볼 수 있습니다.
|
||||
|
||||
또한 [`npm`](https://docs.npmjs.com/)을 통해 미리 빌드된 Electron 바이너리를 받을 수도 있습니다:
|
||||
또한 [`npm`](https://docs.npmjs.com/)을 통해 미리 빌드된 Electron 바이너리를
|
||||
설치할 수도 있습니다:
|
||||
|
||||
```sh
|
||||
# $PATH에 `electron` 커맨드를 등록하고 전역에 설치합니다.
|
||||
|
@ -36,8 +43,9 @@ npm install electron-prebuilt --save-dev
|
|||
|
||||
## 참조 문서
|
||||
|
||||
[Docs](https://github.com/atom/electron/tree/master/docs/README.md)에 개발 가이드와 API 레퍼런스가 있습니다.
|
||||
Electron을 빌드 하는 방법과 프로젝트에 기여하는 방법도 문서에 포함되어 있으니 참고하시기 바랍니다.
|
||||
[Docs](https://github.com/atom/electron/tree/master/docs/README.md)에 개발 지침과
|
||||
API 레퍼런스가 있습니다. Electron을 빌드 하는 방법과 프로젝트에 기여하는법 또한 문서에
|
||||
포함되어 있으니 참고하시기 바랍니다.
|
||||
|
||||
## 참조 문서 (번역)
|
||||
|
||||
|
@ -50,14 +58,17 @@ Electron을 빌드 하는 방법과 프로젝트에 기여하는 방법도 문
|
|||
|
||||
## 시작하기
|
||||
|
||||
[`atom/electron-quick-start`](https://github.com/atom/electron-quick-start) 저장소를 클론하여 Electron을 간단히 접해볼 수 있습니다.
|
||||
[`atom/electron-quick-start`](https://github.com/atom/electron-quick-start)
|
||||
저장소를 클론하여 Electron을 간단히 접해볼 수 있습니다.
|
||||
|
||||
## 커뮤니티
|
||||
|
||||
다음 링크를 통해 커뮤니티에 질문을 올리거나 토론을 나눌 수 있습니다:
|
||||
|
||||
- Atom 포럼의 [`electron`](http://discuss.atom.io/c/electron) 카테고리
|
||||
- Freenode 채팅의 `#atom-shell` 채널
|
||||
- Freenode 채팅의 `#atom-shell` 채널
|
||||
- Slack의 [`Atom`](http://atom-slack.herokuapp.com/) 채널
|
||||
|
||||
[awesome-electron](https://github.com/sindresorhus/awesome-electron) 프로젝트엔 커뮤니티가 운영중인 유용한 예제 어플리케이션과 도구, 리소스가 있으니 한번 참고해 보시기 바랍니다.
|
||||
[awesome-electron](https://github.com/sindresorhus/awesome-electron) 프로젝트에
|
||||
커뮤니티가 운영중인 유용한 예제 어플리케이션과 도구, 리소스가 있으니
|
||||
한번 참고해 보시기 바랍니다.
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
* [app](api/app.md)
|
||||
* [autoUpdater](api/auto-updater.md)
|
||||
* [BrowserWindow (50% 번역됨 - 작업중)](api/browser-window.md)
|
||||
* [BrowserWindow](api/browser-window.md)
|
||||
* [contentTracing](api/content-tracing.md)
|
||||
* [dialog](api/dialog.md)
|
||||
* [globalShortcut](api/global-shortcut.md)
|
||||
|
|
|
@ -43,7 +43,7 @@ win.show();
|
|||
* `alwaysOnTop` Boolean - 윈도우 창이 언제나 다른 창들 위에 유지되는지 여부.
|
||||
* `fullscreen` Boolean - 윈도우 창의 전체화면 활성화 여부.
|
||||
`false`로 지정했을 경우 OS X에선 전체화면 버튼이 숨겨지거나 비활성화됩니다.
|
||||
* `skipTaskbar` Boolean - 작업 표시줄 어플리케이션 아이콘 표시 여부.
|
||||
* `skipTaskbar` Boolean - 작업표시줄 어플리케이션 아이콘 표시 여부.
|
||||
* `kiosk` Boolean - Kiosk(키오스크) 모드.
|
||||
* `title` String - 기본 윈도우 창 제목.
|
||||
* `icon` [NativeImage](native-image.md) - 윈도우 아이콘, 생략하면 실행 파일의 아이콘이 대신 사용됩니다.
|
||||
|
@ -304,7 +304,7 @@ var win = new BrowserWindow({ width: 800, height: 600 });
|
|||
|
||||
### `win.isFocused()`
|
||||
|
||||
윈도우가 포커스 되었는지 여부를 반환합니다.
|
||||
윈도우가 포커스되었는지 여부를 반환합니다.
|
||||
|
||||
### `win.show()`
|
||||
|
||||
|
@ -344,7 +344,7 @@ var win = new BrowserWindow({ width: 800, height: 600 });
|
|||
|
||||
### `win.isMinimized()`
|
||||
|
||||
윈도우가 최소화 되었는지 여부를 반환합니다.
|
||||
윈도우가 최소화되었는지 여부를 반환합니다.
|
||||
|
||||
### `win.setFullScreen(flag)`
|
||||
|
||||
|
@ -358,26 +358,20 @@ var win = new BrowserWindow({ width: 800, height: 600 });
|
|||
|
||||
### `win.setAspectRatio(aspectRatio[, extraSize])` _OS X_
|
||||
|
||||
* `aspectRatio` The aspect ratio we want to maintain for some portion of the
|
||||
content view.
|
||||
* `extraSize` Object (optional) - The extra size not to be included while
|
||||
maintaining the aspect ratio. Properties:
|
||||
* `aspectRatio` 유지하려 하는 컨텐츠 뷰 일부의 종횡비
|
||||
* `extraSize` Object (optional) - 종횡비를 유지하는 동안 포함되지 않을 엑스트라 크기. 사용 가능한 속성:
|
||||
* `width` Integer
|
||||
* `height` Integer
|
||||
|
||||
This will have a window maintain an aspect ratio. The extra size allows a
|
||||
developer to have space, specified in pixels, not included within the aspect
|
||||
ratio calculations. This API already takes into account the difference between a
|
||||
window's size and its content size.
|
||||
이 메서드는 윈도우의 종횡비를 유지하는 기능을 수행합니다.
|
||||
엑스트라 크기는 개발자가 픽셀로 특정한 공간이 있을 때 종횡비 계산에서 제외됩니다.
|
||||
이 API는 윈도우의 크기와 컨텐츠 사이즈의 차이를 이미 고려하고 있습니다.
|
||||
|
||||
Consider a normal window with an HD video player and associated controls.
|
||||
Perhaps there are 15 pixels of controls on the left edge, 25 pixels of controls
|
||||
on the right edge and 50 pixels of controls below the player. In order to
|
||||
maintain a 16:9 aspect ratio (standard aspect ratio for HD @1920x1080) within
|
||||
the player itself we would call this function with arguments of 16/9 and
|
||||
[ 40, 50 ]. The second argument doesn't care where the extra width and height
|
||||
are within the content view--only that they exist. Just sum any extra width and
|
||||
height areas you have within the overall content view.
|
||||
일반 윈도우에서 작동하는 HD 비디오 플레이어와 관련된 컨트롤을 고려합니다.
|
||||
만약 15 픽셀의 컨트롤이 왼쪽 가장자리에 있고 25 픽셀의 컨트롤이 오른쪽 가장자리에 있으며 50 픽셀의 컨트롤이 플레이어 밑에 있을 때
|
||||
플레이어 자체가 16:9 종횡비(HD의 표준 종횡비는 @1920x1080)를 유지하기 위해선 이 함수를 16/9, [ 40, 50 ] 인수와 함께 호출해야 합니다.
|
||||
두번째 인수 엑스트라 크기는 존재하는 크기만 관여하고 컨텐츠 뷰 내의 크기는 관여하지 않습니다.
|
||||
그저 전체 컨텐츠 뷰 내에 있는 모든 엑스트라 너비, 높이 영역이 합해집니다.
|
||||
|
||||
### `win.setBounds(options)`
|
||||
|
||||
|
@ -484,76 +478,72 @@ height areas you have within the overall content view.
|
|||
|
||||
윈도우의 제목을 반환합니다.
|
||||
|
||||
**참고:** The title of web page can be different from the title of the native
|
||||
window.
|
||||
**참고:** 웹 페이지의 제목과 네이티브 윈도우의 제목은 서로 다를 수 있습니다.
|
||||
|
||||
### `win.flashFrame(flag)`
|
||||
|
||||
* `flag` Boolean
|
||||
|
||||
Starts or stops flashing the window to attract user's attention.
|
||||
사용자가 윈도우에 관심을 가질 수 있도록 창을 깜빡이거나 이를 중지합니다.
|
||||
|
||||
### `win.setSkipTaskbar(skip)`
|
||||
|
||||
* `skip` Boolean
|
||||
|
||||
Makes the window not show in the taskbar.
|
||||
어플리케이션 아이콘을 작업표시줄에 보이지 않도록 설정합니다.
|
||||
|
||||
### `win.setKiosk(flag)`
|
||||
|
||||
* `flag` Boolean
|
||||
|
||||
Enters or leaves the kiosk mode.
|
||||
Kiosk(키오스크) 모드를 설정합니다.
|
||||
|
||||
### `win.isKiosk()`
|
||||
|
||||
Returns whether the window is in kiosk mode.
|
||||
현재 윈도우가 kiosk 모드인지 여부를 반환합니다.
|
||||
|
||||
### `win.hookWindowMessage(message, callback)` _WINDOWS_
|
||||
### `win.hookWindowMessage(message, callback)` _Windows_
|
||||
|
||||
* `message` Integer
|
||||
* `callback` Function
|
||||
|
||||
Hooks a windows message. The `callback` is called when
|
||||
the message is received in the WndProc.
|
||||
Windows 메시지 훅을 등록합니다. `callback`은 WndProc에서 메시지를 받았을 때 호출됩니다.
|
||||
|
||||
### `win.isWindowMessageHooked(message)` _WINDOWS_
|
||||
### `win.isWindowMessageHooked(message)` _Windows_
|
||||
|
||||
* `message` Integer
|
||||
|
||||
Returns `true` or `false` depending on whether the message is hooked.
|
||||
지정한 메시지가 후킹됬는지 여부를 반환합니다.
|
||||
|
||||
### `win.unhookWindowMessage(message)` _WINDOWS_
|
||||
### `win.unhookWindowMessage(message)` _Windows_
|
||||
|
||||
* `message` Integer
|
||||
|
||||
Unhook the window message.
|
||||
지정한 메시지 훅을 등록 해제합니다.
|
||||
|
||||
### `win.unhookAllWindowMessages()` _WINDOWS_
|
||||
### `win.unhookAllWindowMessages()` _Windows_
|
||||
|
||||
Unhooks all of the window messages.
|
||||
모든 메시지 훅을 등록 해제합니다.
|
||||
|
||||
### `win.setRepresentedFilename(filename)` _OS X_
|
||||
|
||||
* `filename` String
|
||||
|
||||
Sets the pathname of the file the window represents, and the icon of the file
|
||||
will show in window's title bar.
|
||||
윈도우 대표 파일의 경로명을 설정합니다. 파일의 아이콘이 윈도우 타이틀 바에 표시됩니다.
|
||||
|
||||
### `win.getRepresentedFilename()` _OS X_
|
||||
|
||||
Returns the pathname of the file the window represents.
|
||||
윈도우 대표 파일의 경로명을 반환합니다.
|
||||
|
||||
### `win.setDocumentEdited(edited)` _OS X_
|
||||
|
||||
* `edited` Boolean
|
||||
|
||||
Specifies whether the window’s document has been edited, and the icon in title
|
||||
bar will become grey when set to `true`.
|
||||
윈도우의 문서가 변경되었는지 여부를 설정합니다. 그리고 `true`로 설정했을 때 타이틀 바의 아이콘이 회색으로 표시됩니다.
|
||||
|
||||
### `win.isDocumentEdited()` _OS X_
|
||||
|
||||
Whether the window's document has been edited.
|
||||
윈도우의 문서가 변경되었는지 여부를 반환합니다.
|
||||
|
||||
### `win.focusOnWebView()`
|
||||
|
||||
|
@ -561,138 +551,129 @@ Whether the window's document has been edited.
|
|||
|
||||
### `win.capturePage([rect, ]callback)`
|
||||
|
||||
* `rect` Object (optional)- The area of page to be captured, properties:
|
||||
* `rect` Object (optional) - 캡쳐할 페이지의 영역. 사용할 수 있는 속성은 다음과 같습니다:
|
||||
* `x` Integer
|
||||
* `y` Integer
|
||||
* `width` Integer
|
||||
* `height` Integer
|
||||
* `callback` Function
|
||||
|
||||
Captures a snapshot of the page within `rect`. Upon completion `callback` will
|
||||
be called with `callback(image)`. The `image` is an instance of
|
||||
[NativeImage](native-image.md) that stores data of the snapshot. Omitting
|
||||
`rect` will capture the whole visible page.
|
||||
페이지의 스크린샷을 `rect`에 설정한 만큼 캡처합니다.
|
||||
캡처가 완료되면 `callback`이 `callback(image)` 형식으로 호출됩니다.
|
||||
`image`는 [NativeImage](native-image.md)의 인스턴스이며 스크린샷 데이터를 담고있습니다.
|
||||
`rect`를 생략하면 페이지 전체를 캡처합니다.
|
||||
|
||||
### `win.print([options])`
|
||||
|
||||
Same as `webContents.print([options])`
|
||||
`webContents.print([options])` API와 같습니다.
|
||||
|
||||
### `win.printToPDF(options, callback)`
|
||||
|
||||
Same as `webContents.printToPDF(options, callback)`
|
||||
`webContents.printToPDF(options, callback)` API와 같습니다.
|
||||
|
||||
### `win.loadURL(url[, options])`
|
||||
|
||||
Same as `webContents.loadURL(url[, options])`.
|
||||
`webContents.loadURL(url[, options])` API와 같습니다.
|
||||
|
||||
### `win.reload()`
|
||||
|
||||
Same as `webContents.reload`.
|
||||
`webContents.reload` API와 같습니다.
|
||||
|
||||
### `win.setMenu(menu)` _Linux_ _Windows_
|
||||
|
||||
* `menu` Menu
|
||||
|
||||
Sets the `menu` as the window's menu bar, setting it to `null` will remove the
|
||||
menu bar.
|
||||
지정한 `menu`를 윈도우의 메뉴로 설정합니다 `null`을 설정하면 메뉴를 제거합니다.
|
||||
|
||||
### `win.setProgressBar(progress)`
|
||||
|
||||
* `progress` Double
|
||||
|
||||
Sets progress value in progress bar. Valid range is [0, 1.0].
|
||||
작업표시줄에 표시되고 있는 어플리케이션 아이콘에 진행 상태를 표시합니다. [0, 1.0] 사이의 값을 지정할 수 있습니다.
|
||||
|
||||
Remove progress bar when progress < 0;
|
||||
Change to indeterminate mode when progress > 1.
|
||||
진행 상태가 < 0 이 되면 진행 상태 표시를 제거합니다.
|
||||
진행 상태가 > 1 이 되면 불확정 상태 표시로 전환합니다.
|
||||
|
||||
On Linux platform, only supports Unity desktop environment, you need to specify
|
||||
the `*.desktop` file name to `desktopName` field in `package.json`. By default,
|
||||
it will assume `app.getName().desktop`.
|
||||
Linux 플랫폼에선 Unity 데스크톱 환경만 지원합니다.
|
||||
그리고 이 기능을 사용하려면 `*.desktop` 파일을 생성한 후 `package.json`의 `desktopName` 필드에 파일 이름을 지정해야 합니다.
|
||||
기본적으로 `app.getName().desktop`을 통해 접근합니다.
|
||||
|
||||
### `win.setOverlayIcon(overlay, description)` _Windows 7+_
|
||||
|
||||
* `overlay` [NativeImage](native-image.md) - the icon to display on the bottom
|
||||
right corner of the taskbar icon. If this parameter is `null`, the overlay is
|
||||
cleared
|
||||
* `description` String - a description that will be provided to Accessibility
|
||||
screen readers
|
||||
|
||||
Sets a 16px overlay onto the current taskbar icon, usually used to convey some
|
||||
sort of application status or to passively notify the user.
|
||||
* `overlay` [NativeImage](native-image.md) - 작업표시줄 아이콘의 우측 하단에 표시될 아이콘입니다.
|
||||
`null`로 지정하면 빈 오버레이가 사용됩니다
|
||||
* `description` String - 접근성 설정에 의한 스크린 리더에 제공될 설명입니다
|
||||
|
||||
현재 작업표시줄 아이콘에 16px 크기의 오버레이를 지정합니다.
|
||||
보통 이 기능은 어플리케이션의 여러 상태를 사용자에게 소극적으로 알리기 위한 방법으로 사용됩니다.
|
||||
|
||||
### `win.setThumbarButtons(buttons)` _Windows 7+_
|
||||
|
||||
`buttons` Array of `button` Objects:
|
||||
`buttons` - `button` 객체의 배열:
|
||||
|
||||
`button` Object, properties:
|
||||
`button` 객체는 다음과 같은 속성을 가지고 있습니다:
|
||||
|
||||
* `icon` [NativeImage](native-image.md) - The icon showing in thumbnail
|
||||
toolbar.
|
||||
* `tooltip` String (optional) - The text of the button's tooltip.
|
||||
* `flags` Array (optional) - Control specific states and behaviors
|
||||
of the button. By default, it uses `enabled`. It can include following
|
||||
Strings:
|
||||
* `enabled` - The button is active and available to the user.
|
||||
* `disabled` - The button is disabled. It is present, but has a visual
|
||||
state indicating it will not respond to user action.
|
||||
* `dismissonclick` - When the button is clicked, the taskbar button's
|
||||
flyout closes immediately.
|
||||
* `nobackground` - Do not draw a button border, use only the image.
|
||||
* `hidden` - The button is not shown to the user.
|
||||
* `noninteractive` - The button is enabled but not interactive; no
|
||||
pressed button state is drawn. This value is intended for instances
|
||||
where the button is used in a notification.
|
||||
* `icon` [NativeImage](native-image.md) - 미리보기 툴바에 보여질 아이콘.
|
||||
* `tooltip` String (optional) - 버튼의 툴팁 텍스트.
|
||||
* `flags` Array (optional) - 버튼의 특정 동작 및 상태 제어. 기본적으로 `enabled`이 사용됩니다.
|
||||
이 속성은 다음 문자열들을 포함할 수 있습니다:
|
||||
* `enabled` - 사용자가 사용할 수 있도록 버튼이 활성화 됩니다.
|
||||
* `disabled` - 버튼이 비활성화 됩니다. 버튼은 표시되지만 시각적인 상태는 사용자의 동작에 응답하지 않는
|
||||
비활성화 상태로 표시됩니다.
|
||||
* `dismissonclick` - 버튼이 클릭되면 작업표시줄 버튼의 미리보기(flyout)가 즉시 종료됩니다.
|
||||
* `nobackground` - 버튼의 테두리를 표시하지 않습니다. 이미지에만 사용할 수 있습니다.
|
||||
* `hidden` - 버튼을 사용자에게 표시되지 않도록 숨깁니다.
|
||||
* `noninteractive` - 버튼은 활성화되어 있지만 반응이 제거되며 버튼을 눌러도 눌려지지 않은 상태를 유지합니다.
|
||||
이 값은 버튼을 알림의 용도로 사용하기 위해 만들어졌습니다.
|
||||
* `click` - Function
|
||||
|
||||
Add a thumbnail toolbar with a specified set of buttons to the thumbnail image
|
||||
of a window in a taskbar button layout. Returns a `Boolean` object indicates
|
||||
whether the thumbnail has been added successfully.
|
||||
윈도우 작업표시줄 버튼 레이아웃의 미리보기 이미지 영역에 미리보기 툴바와 버튼 세트를 지정합니다.
|
||||
반환되는 `Boolean` 값은 미리보기 툴바가 성공적으로 추가됬는지를 알려줍니다.
|
||||
|
||||
The number of buttons in thumbnail toolbar should be no greater than 7 due to
|
||||
the limited room. Once you setup the thumbnail toolbar, the toolbar cannot be
|
||||
removed due to the platform's limitation. But you can call the API with an empty
|
||||
array to clean the buttons.
|
||||
미리보기 이미지 영역의 제한된 크기로 인해 미리보기 툴바에 추가될 수 있는 최대 버튼의 개수는 7개이며 이 이상 추가될 수 없습니다.
|
||||
플랫폼의 제약으로 인해 미리보기 툴바는 한 번 설정되면 삭제할 수 없습니다. 하지만 이 API에 빈 배열을 전달하여 버튼들을 제거할 수 있습니다.
|
||||
|
||||
### `win.showDefinitionForSelection()` _OS X_
|
||||
|
||||
Shows pop-up dictionary that searches the selected word on the page.
|
||||
페이지의 선택된 단어에 대한 사전 검색 결과 팝업을 표시합니다.
|
||||
|
||||
### `win.setAutoHideMenuBar(hide)`
|
||||
|
||||
* `hide` Boolean
|
||||
|
||||
Sets whether the window menu bar should hide itself automatically. Once set the
|
||||
menu bar will only show when users press the single `Alt` key.
|
||||
메뉴 막대 자동 숨김 기능을 활성화 합니다.
|
||||
숨겨진 메뉴는 사용자가 `Alt` 키를 단일 입력했을 때만 표시됩니다.
|
||||
|
||||
If the menu bar is already visible, calling `setAutoHideMenuBar(true)` won't
|
||||
hide it immediately.
|
||||
메뉴 막대가 이미 표시되고 있을 때 `setAutoHideMenuBar(true)`를 호출한다고 해서 메뉴가 즉시 숨겨지지는 않습니다.
|
||||
|
||||
### `win.isMenuBarAutoHide()`
|
||||
|
||||
Returns whether menu bar automatically hides itself.
|
||||
메뉴 막대 자동 숨김 상태인지 여부를 반환합니다.
|
||||
|
||||
### `win.setMenuBarVisibility(visible)`
|
||||
|
||||
* `visible` Boolean
|
||||
|
||||
Sets whether the menu bar should be visible. If the menu bar is auto-hide, users
|
||||
can still bring up the menu bar by pressing the single `Alt` key.
|
||||
메뉴 막대의 표시 여부를 설정합니다.
|
||||
만약 메뉴 막대 자동 숨김 상태라면 여전히 사용자가 `Alt` 키를 입력하여 메뉴 막대를 표시되도록 할 수 있습니다.
|
||||
|
||||
**역주:** 기본 메뉴 막대를 완전히 없애려면 `win.setMenu(null)`를 호출해야 합니다.
|
||||
단순히 이 API를 사용하면 여전히 메뉴에 등록된 핫 키가 작동합니다.
|
||||
|
||||
### `win.isMenuBarVisible()`
|
||||
|
||||
Returns whether the menu bar is visible.
|
||||
메뉴 막대가 표시되고 있는지 여부를 반환합니다.
|
||||
|
||||
### `win.setVisibleOnAllWorkspaces(visible)`
|
||||
|
||||
* `visible` Boolean
|
||||
|
||||
Sets whether the window should be visible on all workspaces.
|
||||
윈도우가 모든 워크스페이스에서 표시될지 여부를 설정합니다.
|
||||
|
||||
**참고:** 이 API는 Windows에서 아무 일도 하지 않습니다.
|
||||
|
||||
### `win.isVisibleOnAllWorkspaces()`
|
||||
|
||||
Returns whether the window is visible on all workspaces.
|
||||
윈도우가 모든 워크스페이스에서 표시될지 여부를 반환합니다.
|
||||
|
||||
**참고:** 이 API는 Windows에서 언제나 false를 반환합니다.
|
||||
|
|
|
@ -181,25 +181,20 @@ proxy-uri-list = <proxy-uri>[","<proxy-uri-list>]
|
|||
proxy-uri = [<proxy-scheme>"://"]<proxy-host>[":"<proxy-port>]
|
||||
|
||||
예시:
|
||||
"http=foopy:80;ftp=foopy2" -- use HTTP proxy "foopy:80" for http://
|
||||
URLs, and HTTP proxy "foopy2:80" for
|
||||
ftp:// URLs.
|
||||
"foopy:80" -- use HTTP proxy "foopy:80" for all URLs.
|
||||
"foopy:80,bar,direct://" -- use HTTP proxy "foopy:80" for all URLs,
|
||||
failing over to "bar" if "foopy:80" is
|
||||
unavailable, and after that using no
|
||||
proxy.
|
||||
"socks4://foopy" -- use SOCKS v4 proxy "foopy:1080" for all
|
||||
URLs.
|
||||
"http=foopy,socks5://bar.com -- use HTTP proxy "foopy" for http URLs,
|
||||
and fail over to the SOCKS5 proxy
|
||||
"bar.com" if "foopy" is unavailable.
|
||||
"http=foopy,direct:// -- use HTTP proxy "foopy" for http URLs,
|
||||
and use no proxy if "foopy" is
|
||||
unavailable.
|
||||
"http=foopy;socks=foopy2 -- use HTTP proxy "foopy" for http URLs,
|
||||
and use socks4://foopy2 for all other
|
||||
URLs.
|
||||
"http=foopy:80;ftp=foopy2" -- http:// URL에 "foopy:80" HTTP 프록시를 사용합니다.
|
||||
"foopy2:80" 는 ftp:// URL에 사용됩니다.
|
||||
"foopy:80" -- 모든 URL에 "foopy:80" 프록시를 사용합니다.
|
||||
"foopy:80,bar,direct://" -- 모든 URL에 "foopy:80" HTTP 프록시를 사용합니다.
|
||||
문제가 발생하여 "foopy:80"를 사용할 수 없는 경우 "bar"를 대신 사용하여
|
||||
장애를 복구하며 그 다음 문제가 생긴 경우 프록시를 사용하지 않습니다.
|
||||
"socks4://foopy" -- 모든 URL에 "foopy:1000" SOCKS v4 프록시를 사용합니다.
|
||||
"http=foopy,socks5://bar.com -- http:// URL에 "foopy" HTTP 프록시를 사용합니다.
|
||||
문제가 발생하여 "foopy"를 사용할 수 없는 경우 SOCKS5 "bar.com"
|
||||
프록시를 대신 사용합니다.
|
||||
"http=foopy,direct:// -- http:// URL에 "foopy" HTTP 프록시를 사용합니다.
|
||||
그리고 문제가 발생하여 "foopy"를 사용할 수 없는 경우 프록시를 사용하지 않습니다.
|
||||
"http=foopy;socks=foopy2 -- http:// URL에 "foopy" HTTP 프록시를 사용합니다.
|
||||
그리고 "socks4://foopy2" 프록시를 다른 모든 URL에 사용합니다.
|
||||
```
|
||||
|
||||
### `session.setDownloadPath(path)`
|
||||
|
|
|
@ -169,7 +169,8 @@ __주의:__ `bounds`는 OS X 와 Windows에서만 작동합니다.
|
|||
|
||||
* `highlight` Boolean
|
||||
|
||||
트레이 아이콘을 클릭했을 때 하이라이트 될지 설정합니다.
|
||||
트레이 아이콘이 클릭됐을 때 아이콘의 배경이 파란색으로 하이라이트 될지 여부를 지정합니다.
|
||||
기본값은 true입니다.
|
||||
|
||||
### `Tray.displayBalloon(options)` _Windows_
|
||||
|
||||
|
|
|
@ -283,7 +283,7 @@ var currentURL = win.webContents.getURL();
|
|||
|
||||
### `webContents.isCrashed()`
|
||||
|
||||
렌더러 프로세스가 예기치 않게 종료 되었는지 여부를 반환합니다.
|
||||
렌더러 프로세스가 예기치 않게 종료되었는지 여부를 반환합니다.
|
||||
|
||||
### `webContents.setUserAgent(userAgent)`
|
||||
|
||||
|
|
|
@ -3,35 +3,46 @@
|
|||
__참고: Electron은 Atom Shell의 새로운 이름입니다.__
|
||||
|
||||
NW.js 처럼 Electron은 JavaScript와 HTML 그리고 Node 통합 환경을 제공함으로써
|
||||
웹 페이지에서 저 수준 시스템에 접근할 수 있도록 하여 웹 기반 데스크탑 어플리케이션을 작성할 수 있도록 하는 프레임워크 입니다.
|
||||
웹 페이지에서 저 수준 시스템에 접근할 수 있도록 하여 웹 기반 데스크탑 어플리케이션을
|
||||
작성할 수 있도록 하는 프레임워크 입니다.
|
||||
|
||||
하지만 Electron과 NW.js는 근본적인 개발흐름의 차이도 있습니다:
|
||||
|
||||
__1. 어플리케이션의 엔트리 포인트__
|
||||
|
||||
NW.js에선 어플리케이션의 엔트리 포인트로 웹 페이지를 사용합니다.
|
||||
`package.json`내의 main 필드에 메인 웹 페이지(index.html) URL을 지정하면 어플리케이션의 메인 윈도우로 열리게 됩니다.
|
||||
`package.json`내의 main 필드에 메인 웹 페이지(index.html) URL을 지정하면
|
||||
어플리케이션의 메인 윈도우로 열리게 됩니다.
|
||||
|
||||
Electron에선 JavaScript를 엔트리 포인트로 사용합니다. URL을 직접 제공하는 대신 API를 사용하여 직접 브라우저 창과 HTML 파일을 로드할 수 있습니다.
|
||||
또한 윈도우의 종료시기를 결정하는 이벤트를 리스닝해야합니다.
|
||||
Electron에선 JavaScript를 엔트리 포인트로 사용합니다. URL을 직접 제공하는 대신 API를
|
||||
사용하여 직접 브라우저 창과 HTML 파일을 로드할 수 있습니다. 또한 윈도우의 종료시기를
|
||||
결정하는 이벤트를 리스닝해야합니다.
|
||||
|
||||
Electron은 Node.js 런타임과 비슷하게 작동합니다. Electron의 API는 저수준이기에 브라우저 테스팅을 위해 [PhantomJS](http://phantomjs.org/)를 사용할 수도 있습니다.
|
||||
Electron은 Node.js 런타임과 비슷하게 작동합니다. Electron의 API는 저수준이기에
|
||||
브라우저 테스팅을 위해 [PhantomJS](http://phantomjs.org/)를 사용할 수도 있습니다.
|
||||
|
||||
__2. 빌드 시스템__
|
||||
|
||||
Electron은 Chromium의 모든것을 빌드하는 복잡성을 피하기 위해 [libchromiumcontent](https://github.com/brightray/libchromiumcontent)를 사용하여
|
||||
Chromium의 Content API에 접근합니다. libchromiumcontent은 단일 공유 라이브러리이고 Chromium Content 모듈과 종속성 라이브러리들을 포함합니다.
|
||||
유저는 Electron을 빌드 하기 위해 높은 사양의 빌드용 컴퓨터를 구비할 필요가 없습니다.
|
||||
Electron은 Chromium의 모든것을 빌드하는 복잡성을 피하기 위해
|
||||
[libchromiumcontent](https://github.com/brightray/libchromiumcontent)를 사용하여
|
||||
Chromium의 Content API에 접근합니다. libchromiumcontent은 단일 공유 라이브러리이고
|
||||
Chromium Content 모듈과 종속성 라이브러리들을 포함합니다. 유저는 Electron을 빌드 하기
|
||||
위해 높은 사양의 빌드용 컴퓨터를 구비할 필요가 없습니다.
|
||||
|
||||
__3. Node 통합__
|
||||
|
||||
NW.js는 웹 페이지에서 require를 사용할 수 있도록 Chromium을 패치했습니다. 한편 Electron은 Chromium의 해킹을 방지하기 위해 libuv loop와 각 플랫폼의 메시지 루프에 통합하는 등의 다른 방법을 채택하였습니다.
|
||||
[`node_bindings`][node-bindings] 코드를 보면 이 부분이 어떻게 구현됬는지를 알 수 있습니다.
|
||||
NW.js는 웹 페이지에서 require를 사용할 수 있도록 Chromium을 패치했습니다.
|
||||
한편 Electron은 Chromium의 해킹을 방지하기 위해 libuv loop와 각 플랫폼의
|
||||
메시지 루프에 통합하는 다른 방법을 채택하였습니다.
|
||||
[`node_bindings`][node-bindings]의 코드를 보면 이 부분이 어떻게 구현됬는지를
|
||||
알 수 있습니다.
|
||||
|
||||
__4. 다중 컨텍스트__
|
||||
|
||||
만약 NW.js를 사용해본적이 있다면 Node context와 Web context의 개념을 잘 알고 있을겁니다. 이 개념은 NW.js가 구현된 방식에 따라 만들어졌습니다.
|
||||
만약 NW.js를 사용해본 적이 있다면 Node context와 Web context의 개념을 잘 알고 있을
|
||||
겁니다. 이러한 개념은 NW.js가 구현되기 위해 만들어졌습니다.
|
||||
|
||||
Node의 [다중 컨텍스트](http://strongloop.com/strongblog/whats-new-node-js-v0-12-multiple-context-execution/)를 사용할 경우 Electron은 웹 페이지에서 새로운 JavaScript 컨텍스트를 생성하지 않습니다.
|
||||
Node의 [다중 컨텍스트](http://strongloop.com/strongblog/whats-new-node-js-v0-12-multiple-context-execution/)를
|
||||
사용하기 때문에 Electron은 웹 페이지의 새로운 JavaScript 컨텍스트를 생성하지 않습니다.
|
||||
|
||||
[node-bindings]: https://github.com/atom/electron/tree/master/atom/common
|
||||
|
|
|
@ -4,10 +4,14 @@
|
|||
|
||||
## 빌드전 요구사양
|
||||
|
||||
* Python 2.7.x. 몇몇 CentOS와 같은 배포판들은 아직도 Python 2.6.x 버전을 사용합니다. 그래서 `python -V`를 통해 버전을 확인해 줄 필요가 있습니다.
|
||||
* Node.js v0.12.x. Node를 설치하는 방법은 여러가지가 있습니다. 그중 하나는 [Node.js](http://nodejs.org) 사이트에서 소스코드를 받아 빌드하는 방법입니다.
|
||||
이렇게 하면 Node를 일반 유저로 홈 디렉터리에 설치할 수 있습니다. 또는 [NodeSource](https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories)에서 소스 파일을 받아올 수 있습니다.
|
||||
자세한 내용은 [Node.js 설치 방법](https://github.com/joyent/node/wiki/Installation) 을 참고하세요.
|
||||
* Python 2.7.x. 몇몇 CentOS와 같은 배포판들은 아직도 Python 2.6.x 버전을 사용합니다.
|
||||
그래서 먼저 `python -V`를 통해 버전을 확인할 필요가 있습니다.
|
||||
* Node.js v0.12.x. Node를 설치하는 방법은 여러 가지가 있습니다. 먼저,
|
||||
[Node.js](http://nodejs.org) 사이트에서 소스코드를 받아 빌드하는 방법입니다.
|
||||
이렇게 하면 Node를 일반 유저로 홈 디렉터리에 설치할 수 있습니다. 다른 방법으로는
|
||||
[NodeSource](https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories)에서
|
||||
소스 파일을 받아와 설치할 수 있습니다. 자세한 내용은 [Node.js 설치 방법](https://github.com/joyent/node/wiki/Installation)을
|
||||
참고하세요.
|
||||
* Clang 3.4 또는 최신 버전
|
||||
* GTK+ 와 libnotify의 개발용 헤더
|
||||
|
||||
|
@ -28,13 +32,14 @@ $ sudo yum install clang dbus-devel gtk2-devel libnotify-devel libgnome-keyring-
|
|||
alsa-lib-devel libXrandr-devel GConf2-devel nss-devel
|
||||
```
|
||||
|
||||
다른 배포판의 경우 pacman 같은 패키지 매니저를 통해 패키지를 설치 할 수 있습니다. 패키지의 이름은 대부분 위 예시와 비슷할 것입니다.
|
||||
또는 소스코드를 내려받아 직접 빌드하는 방법도 있습니다.
|
||||
다른 배포판의 경우 pacman 같은 패키지 매니저를 통해 패키지를 설치 할 수 있습니다.
|
||||
패키지의 이름은 대부분 위 예시와 비슷할 것입니다. 또는 소스코드를 내려받아
|
||||
직접 빌드하는 방법도 있습니다.
|
||||
|
||||
## 가상머신을 사용하여 빌드 하는 경우
|
||||
|
||||
만약 Electron을 가상머신으로 빌드 할 계획이라면 해당 가상머신의 스토리지를 최소 25GB 이상을 확보해 놓아야 합니다.
|
||||
|
||||
만약 Electron을 가상머신으로 빌드 할 계획이라면 해당 가상머신의 스토리지를
|
||||
최소 25GB 이상을 확보해 놓아야 합니다.
|
||||
|
||||
## 코드 가져오기
|
||||
|
||||
|
@ -44,10 +49,11 @@ $ git clone https://github.com/atom/electron.git
|
|||
|
||||
## 부트 스트랩
|
||||
|
||||
부트스트랩 스크립트는 필수적인 빌드 종속성 라이브러리들을 모두 다운로드하고 프로젝트 파일을 생성합니다.
|
||||
스크립트가 정상적으로 작동하기 위해선 Python 2.7.x 버전이 필요합니다.
|
||||
아마 다운로드 작업이 상당히 많은 시간을 소요할 것입니다.
|
||||
참고로 Electron은 빌드 툴체인으로 `ninja`를 사용하므로 `Makefile`은 생성되지 않습니다.
|
||||
부트스트랩 스크립트는 필수적인 빌드 종속성 라이브러리들을 모두 다운로드하고
|
||||
프로젝트 파일을 생성합니다. 스크립트가 정상적으로 작동하기 위해선
|
||||
Python 2.7.x 버전이 필요합니다. 아마 다운로드 작업이 상당히 많은 시간을
|
||||
소요할 것입니다. 참고로 Electron은 빌드 툴체인으로 `ninja`를 사용하므로
|
||||
`Makefile`은 생성되지 않습니다.
|
||||
|
||||
```bash
|
||||
$ cd electron
|
||||
|
@ -63,7 +69,8 @@ $ sudo apt-get install libc6-dev-armhf-cross linux-libc-dev-armhf-cross \
|
|||
g++-arm-linux-gnueabihf
|
||||
```
|
||||
|
||||
그리고 `bootstrap.py` 스크립트의 `--target_arch` 파라미터에 `arm` 또는 `ia32` 아키텍쳐를 지정하여 크로스 컴파일 할 수 있습니다:
|
||||
그리고 `bootstrap.py` 스크립트의 `--target_arch` 파라미터에 `arm` 또는 `ia32`
|
||||
아키텍쳐를 지정하여 크로스 컴파일 할 수 있습니다:
|
||||
|
||||
```bash
|
||||
$ ./script/bootstrap.py -v --target_arch=arm
|
||||
|
@ -77,16 +84,18 @@ $ ./script/bootstrap.py -v --target_arch=arm
|
|||
$ ./script/build.py
|
||||
```
|
||||
|
||||
이 스크립트는 `out/R` 디렉터리에 크기가 매우 큰 Electron 실행 파일을 배치합니다. 파일 크기는 1.3GB를 초과합니다.
|
||||
이러한 문제가 발생하는 이유는 Release 타겟 바이너리가 디버그 심볼을 포함하기 때문입니다.
|
||||
파일 크기를 줄이려면 `create-dist.py` 스크립트를 실행하세요:
|
||||
이 스크립트는 `out/R` 디렉터리에 크기가 매우 큰 Electron 실행 파일을 배치합니다.
|
||||
파일 크기는 1.3GB를 초과합니다. 이러한 문제가 발생하는 이유는 Release 타겟 바이너리가
|
||||
디버그 심볼을 포함하기 때문입니다. 파일 크기를 줄이려면
|
||||
`create-dist.py` 스크립트를 실행하세요:
|
||||
|
||||
```bash
|
||||
$ ./script/create-dist.py
|
||||
```
|
||||
|
||||
이 스크립트는 매우 작은 배포판을 `dist` 디렉터리에 생성합니다.
|
||||
create-dist.py 스크립트를 실행한 이후부턴 1.3GB를 초과하는 공간을 차지하는 `out/R` 폴더의 바이너리는 삭제해도 됩니다.
|
||||
create-dist.py 스크립트를 실행한 이후부턴 1.3GB를 초과하는 공간을 차지하는
|
||||
`out/R` 폴더의 바이너리는 삭제해도 됩니다.
|
||||
|
||||
또는 `Debug` 타겟만 빌드 할 수 있습니다:
|
||||
|
||||
|
|
|
@ -20,8 +20,9 @@ $ git clone https://github.com/atom/electron.git
|
|||
|
||||
## 부트 스트랩
|
||||
|
||||
부트스트랩 스크립트는 필수적인 빌드 종속성 라이브러리들을 모두 다운로드하고 프로젝트 파일을 생성합니다.
|
||||
참고로 Electron은 빌드 툴체인으로 `ninja`를 사용하므로 Xcode 프로젝트는 생성되지 않습니다.
|
||||
부트스트랩 스크립트는 필수적인 빌드 종속성 라이브러리들을 모두 다운로드하고
|
||||
프로젝트 파일을 생성합니다. 참고로 Electron은 빌드 툴체인으로 `ninja`를 사용하므로
|
||||
Xcode 프로젝트는 생성되지 않습니다.
|
||||
|
||||
```bash
|
||||
$ cd electron
|
||||
|
@ -46,7 +47,8 @@ $ ./script/build.py -c D
|
|||
|
||||
## 32비트 지원
|
||||
|
||||
Electron은 현재 OS X 64비트만 지원하고 있습니다. 그리고 앞으로도 OS X 32비트는 지원할 계획이 없습니다.
|
||||
Electron은 현재 OS X 64비트만 지원하고 있습니다. 그리고 앞으로도 OS X 32비트는
|
||||
지원할 계획이 없습니다.
|
||||
|
||||
## 테스트
|
||||
|
||||
|
|
|
@ -11,14 +11,18 @@
|
|||
* [Git](http://git-scm.com)
|
||||
|
||||
현재 사용하고 있는 PC에 Windows를 설치하지 않았다면 [modern.ie](https://www.modern.ie/en-us/virtualization-tools#downloads)에서
|
||||
사용 기한이 정해져있는 무료 가상머신 버전의 Windows를 받아 Electron을 빌드하는 방법도 있습니다.
|
||||
사용 기한이 정해져있는 무료 가상머신 버전의 Windows를 받아 Electron을
|
||||
빌드하는 방법도 있습니다.
|
||||
|
||||
Electron은 모든 빌드를 command-line 스크립트를 통해 빌드합니다. 따라서 빌드에 Visual Studio를 사용할 수 없습니다.
|
||||
하지만 여전히 Electron을 개발할 땐 아무 에디터나 사용할 수 있습니다. 빠른 시일내에 Visual Studio를 이용한 빌드도 지원할 계획입니다.
|
||||
Electron은 모든 빌드를 command-line 스크립트를 통해 빌드합니다. 따라서 빌드에
|
||||
Visual Studio를 사용할 수 없습니다. 하지만 여전히 Electron을 개발할 땐 아무 에디터나
|
||||
사용할 수 있습니다. 빠른 시일내에 Visual Studio를 이용한 빌드도 지원할 계획입니다.
|
||||
|
||||
**참고:** Visual Studio가 직접 빌드에 사용되지 않더라도 IDE와 같이 제공된 빌드 툴체인이 빌드에 **필수적으로** 사용되므로 여전히 필요합니다.
|
||||
**참고:** Visual Studio가 직접 빌드에 사용되지 않더라도 IDE와 같이 제공된
|
||||
빌드 툴체인이 빌드에 **반드시** 사용되므로 여전히 필요합니다.
|
||||
|
||||
**참고:** Visual Studio 2015는 사용할 수 없습니다. MSVS **2013**을 사용하고 있는지 확인해주세요.
|
||||
**참고:** Visual Studio 2015는 사용할 수 없습니다.
|
||||
MSVS **2013** 을 사용하고 있는지 확인해주세요.
|
||||
|
||||
## 코드 가져오기
|
||||
|
||||
|
@ -28,8 +32,9 @@ $ git clone https://github.com/atom/electron.git
|
|||
|
||||
## 부트 스트랩
|
||||
|
||||
부트스트랩 스크립트는 필수적인 빌드 종속성 라이브러리들을 모두 다운로드하고 프로젝트 파일을 생성합니다.
|
||||
참고로 Electron은 빌드 툴체인으로 `ninja`를 사용하므로 Visual Studio 프로젝트는 생성되지 않습니다.
|
||||
부트스트랩 스크립트는 필수적인 빌드 종속성 라이브러리들을 모두 다운로드하고
|
||||
프로젝트 파일을 생성합니다. 참고로 Electron은 빌드 툴체인으로 `ninja`를 사용하므로
|
||||
Visual Studio 프로젝트는 생성되지 않습니다.
|
||||
|
||||
```powershell
|
||||
$ cd electron
|
||||
|
@ -50,11 +55,13 @@ $ python script\build.py
|
|||
$ python script\build.py -c D
|
||||
```
|
||||
|
||||
빌드가 모두 끝나면 `out/D` (디버그 타겟) 또는 `out/R` (릴리즈 타겟) 디렉터리에서 `electron.exe` 실행 파일을 찾을 수 있습니다.
|
||||
빌드가 모두 끝나면 `out/D` (디버그 타겟) 또는 `out/R` (릴리즈 타겟) 디렉터리에서
|
||||
`electron.exe` 실행 파일을 찾을 수 있습니다.
|
||||
|
||||
## 64비트 빌드
|
||||
|
||||
64비트를 타겟으로 빌드 하려면 부트스트랩 스크립트를 실행할 때 `--target_arch=x64` 인자를 같이 넘겨주면 됩니다:
|
||||
64비트를 타겟으로 빌드 하려면 부트스트랩 스크립트를 실행할 때
|
||||
`--target_arch=x64` 인자를 같이 넘겨주면 됩니다:
|
||||
|
||||
```powershell
|
||||
$ python script\bootstrap.py -v --target_arch=x64
|
||||
|
@ -76,8 +83,8 @@ $ python script\cpplint.py
|
|||
$ python script\test.py
|
||||
```
|
||||
|
||||
테스트 실행시 `runas`와 같은 네이티브 모듈을 포함하는데 이 모듈은 디버그 빌드에서 같이 사용할 수 없습니다.
|
||||
하지만 여전히 릴리즈 빌드에선 사용할 수 있습니다.
|
||||
테스트 실행시 `runas`와 같은 네이티브 모듈을 포함하는데 이 모듈은 디버그 빌드에서
|
||||
같이 사용할 수 없습니다. 하지만 여전히 릴리즈 빌드에선 사용할 수 있습니다.
|
||||
|
||||
릴리즈 빌드로 테스트를 실행하려면 다음 커맨드를 사용하면 됩니다:
|
||||
|
||||
|
@ -89,7 +96,8 @@ $ python script\test.py -R
|
|||
|
||||
### Command xxxx not found
|
||||
|
||||
만약 `Command xxxx not found`와 같은 형식의 에러가 발생했다면 `VS2012 Command Prompt` 콘솔로 빌드 스크립트를 실행해볼 필요가 있습니다.
|
||||
만약 `Command xxxx not found`와 같은 형식의 에러가 발생했다면
|
||||
`VS2012 Command Prompt` 콘솔로 빌드 스크립트를 실행해볼 필요가 있습니다.
|
||||
|
||||
### Fatal internal compiler error: C1001
|
||||
|
||||
|
@ -97,7 +105,8 @@ Visual Studio가 업데이트까지 완벽하게 설치된 최신버전인지
|
|||
|
||||
### Assertion failed: ((handle))->activecnt >= 0
|
||||
|
||||
Cygwin에서 빌드 할 경우 `bootstrap.py` 스크립트가 다음의 에러와 함께 빌드에 실패할 수 있습니다:
|
||||
Cygwin에서 빌드 할 경우 `bootstrap.py` 스크립트가 다음의 에러와 함께 빌드에
|
||||
실패할 수 있습니다:
|
||||
|
||||
```
|
||||
Assertion failed: ((handle))->activecnt >= 0, file src\win\pipe.c, line 1430
|
||||
|
@ -136,4 +145,5 @@ $ mkdir ~\AppData\Roaming\npm
|
|||
|
||||
### node-gyp is not recognized as an internal or external command
|
||||
|
||||
Git Bash로 빌드 했을 때 이러한 에러가 발생할 수 있습니다. 반드시 PowerShell이나 VS2012 Command Prompt에서 빌드를 진행해야 합니다.
|
||||
Git Bash로 빌드 했을 때 이러한 에러가 발생할 수 있습니다. 반드시 PowerShell이나
|
||||
VS2012 Command Prompt에서 빌드를 진행해야 합니다.
|
||||
|
|
|
@ -9,31 +9,39 @@ Electron을 빌드 할 때 `gyp` 파일들은 다음과 같은 규칙을 따릅
|
|||
|
||||
* `atom.gyp`는 Electron의 빌드 과정 자체를 정의합니다.
|
||||
* `common.gypi`는 Node가 Chromium과 함께 빌드될 수 있도록 조정한 빌드 설정입니다.
|
||||
* `vendor/brightray/brightray.gyp`는 `brightray`의 빌드 과정을 정의하고 Chromium과의 링킹에 대한 기본적인 설정을 포함합니다.
|
||||
* `vendor/brightray/brightray.gyp`는 `brightray`의 빌드 과정을 정의하고
|
||||
Chromium 링킹에 대한 기본적인 설정을 포함합니다.
|
||||
* `vendor/brightray/brightray.gypi`는 빌드에 대한 일반적인 설정이 포함되어 있습니다.
|
||||
|
||||
## 구성요소 빌드
|
||||
|
||||
Chromium은 꽤나 큰 프로젝트입니다. 이 때문에 최종 링킹 작업은 상당한 시간이 소요될 수 있습니다.
|
||||
이 문제는 보통 개발을 어렵게 만듭니다. 우리는 이 문제를 해결하기 위해 Chromium의 "component build" 방식을 도입했습니다.
|
||||
이는 각각의 컴포넌트를 각각 따로 분리하여 공유 라이브러리로 빌드 합니다. 하지만 이 방식을 사용하면 링킹 작업은 매우 빨라지지만 파일 크기와 성능이 느려집니다.
|
||||
Chromium은 꽤나 큰 프로젝트입니다. 이러한 이유로 인해 최종 링킹 작업은 상당한 시간이
|
||||
소요될 수 있습니다. 보통 이런 문제는 개발을 어렵게 만듭니다. 우리는 이 문제를 해결하기
|
||||
위해 Chromium의 "component build" 방식을 도입했습니다. 이는 각각의 컴포넌트를
|
||||
각각 따로 분리하여 공유 라이브러리로 빌드 합니다. 하지만 이 빌드 방식을 사용하면
|
||||
링킹 작업은 매우 빨라지지만 실행 파일 크기가 커지고 성능이 저하됩니다.
|
||||
|
||||
Electron도 상당히 비슷한 접근을 했습니다:
|
||||
`Debug`빌드 시 바이너리는 공유 라이브러리 버전의 Chromium 컴포넌트를 사용해서 링크 속도를 높이고
|
||||
`Release`빌드 시엔 정적 라이브러리 버전의 컴포넌트를 사용합니다.
|
||||
이렇게 각 빌드의 단점을 상호 보완하여 디버그 시 빌드 속도는 향상되고 배포판 빌드 시 공유 라이브러리의 단점은 제거했습니다.
|
||||
Electron도 이러한 방식에 상당히 비슷한 접근을 했습니다:
|
||||
`Debug` 빌드 시 바이너리는 공유 라이브러리 버전의 Chromium 컴포넌트를 사용함으로써
|
||||
링크 속도를 높이고, `Release` 빌드 시 정적 라이브러리 버전의 컴포넌트를 사용합니다.
|
||||
이렇게 각 빌드의 단점을 상호 보완하여 디버그 시 빌드 속도는 향상되고 배포판 빌드의
|
||||
공유 라이브러리의 단점은 개선했습니다.
|
||||
|
||||
## 부트스트랩 최소화
|
||||
|
||||
Prebuilt된 모든 Chromium 바이너리들은 부트스트랩 스크립트가 실행될 때 다운로드됩니다.
|
||||
기본적으로 공유 라이브러리와 정적 라이브러리 모두 다운로드되며 최종 전체 파일 크기는 플랫폼에 따라 800MB에서 2GB까지 차지합니다.
|
||||
기본적으로 공유 라이브러리와 정적 라이브러리 모두 다운로드되며 최종 전체 파일 크기는
|
||||
플랫폼에 따라 800MB에서 2GB까지 차지합니다.
|
||||
|
||||
기본적으로 (`libchromiumcontent`)는 Amazon Web Service를 통해 다운로드 됩니다.
|
||||
만약 `LIBCHROMIUMCONTENT_MIRROR` 환경 변수가 설정되어 있으면 부트스트랩은 해당 링크를 사용하여 바이너리를 다운로드 합니다.
|
||||
[libchromiumcontent-qiniu-mirror](https://github.com/hokein/libchromiumcontent-qiniu-mirror)는 libchromiumcontent의 미러입니다.
|
||||
만약 AWS에 접근할 수 없다면 `export LIBCHROMIUMCONTENT_MIRROR=http://7xk3d2.dl1.z0.glb.clouddn.com/`를 통해 다운로드 할 수 있습니다.
|
||||
만약 `LIBCHROMIUMCONTENT_MIRROR` 환경 변수가 설정되어 있으면 부트스트랩은 해당 링크를
|
||||
사용하여 바이너리를 다운로드 합니다. [libchromiumcontent-qiniu-mirror](https://github.com/hokein/libchromiumcontent-qiniu-mirror)는
|
||||
libchromiumcontent의 미러입니다. 만약 AWS에 접근할 수 없다면
|
||||
`export LIBCHROMIUMCONTENT_MIRROR=http://7xk3d2.dl1.z0.glb.clouddn.com/` 미러를
|
||||
통해 다운로드 할 수 있습니다.
|
||||
|
||||
만약 빠르게 Electron의 개발 또는 테스트만 하고 싶다면 `--dev` 플래그를 추가하여 공유 라이브러리만 다운로드할 수 있습니다:
|
||||
만약 빠르게 Electron의 개발 또는 테스트만 하고 싶다면 `--dev` 플래그를 추가하여
|
||||
공유 라이브러리만 다운로드할 수 있습니다:
|
||||
|
||||
```bash
|
||||
$ ./script/bootstrap.py --dev
|
||||
|
@ -43,14 +51,19 @@ $ ./script/build.py -c D
|
|||
## 프로젝트 생성 (two-phrase)
|
||||
|
||||
Electron은 `Release`와 `Debug` 빌드가 서로 다른 라이브러리 링크 방식을 사용합니다.
|
||||
하지만 `gyp`는 따로 빌드 설정을 분리하여 라이브러리 링크 방식을 정의하는 것을 지원하지 않습니다.
|
||||
하지만 `gyp`는 따로 빌드 설정을 분리하여 라이브러리 링크 방식을 정의하는 방법을
|
||||
지원하지 않습니다.
|
||||
|
||||
이 문제를 해결하기 위해 Electron은 링크 설정을 제어하는 `gyp` 변수 `libchromiumcontent_component`를 사용하고 `gyp`를 실행할 때 단 하나의 타겟만 생성합니다.
|
||||
이 문제를 해결하기 위해 Electron은 링크 설정을 제어하는 `gyp` 변수
|
||||
`libchromiumcontent_component`를 사용하고 `gyp`를 실행할 때
|
||||
단 하나의 타겟만을 생성합니다.
|
||||
|
||||
## 타겟 이름
|
||||
|
||||
많은 프로젝트에서 타겟 이름을 `Release` 와 `Debug`를 사용하는데 반해 Electron은 `R`과 `D`를 대신 사용합니다.
|
||||
이유는 가끔 알 수 없는 이유(randomly)로 `Release` 와 `Debug` 중 하나만 빌드 설정에 정의되어 있을때 `gyp`가 크래시를 일으키는데
|
||||
전술한 바와 같이 Electron은 한번에 한개의 타겟만을 생성할 수 있기 때문입니다.
|
||||
많은 프로젝트에서 타겟 이름을 `Release` 와 `Debug`를 사용하는데 반해 Electron은
|
||||
`R`과 `D`를 대신 사용합니다. 이유는 가끔 알 수 없는 이유(randomly)로
|
||||
`Release` 와 `Debug` 중 하나만 빌드 설정에 정의되어 있을때 `gyp`가 크래시를 일으키는데
|
||||
이유는 앞서 말한 바와 같이 Electron은 한번에 한개의 타겟만을 생성할 수 있기 때문입니다.
|
||||
|
||||
이 문제는 개발자에게만 영향을 미칩니다. 만약 단순히 Electron을 rebranding 하기 위해 빌드 한다면 이 문제에 신경 쓸 필요가 없습니다.
|
||||
이 문제는 개발자에게만 영향을 미칩니다. 만약 단순히 Electron을 rebranding 하기 위해
|
||||
빌드 하는 것이라면 이 문제에 신경 쓸 필요가 없습니다.
|
||||
|
|
|
@ -1,22 +1,28 @@
|
|||
# Electron 문서 스타일 가이드
|
||||
|
||||
[Electron 문서 읽기](#electron-문서-읽기) 와 [Electron 문서 작성하기](#electron-문서-작성하기) 중 이해가 필요한 부분을 찾아 참고하세요:
|
||||
[Electron 문서 읽기](#electron-문서-읽기) 와
|
||||
[Electron 문서 작성하기](#electron-문서-작성하기) 중 이해가 필요한 부분을 찾아
|
||||
참고하세요:
|
||||
|
||||
## Electron 문서 작성하기
|
||||
|
||||
Electron 문서를 작성하는 규칙은 다음과 같습니다.
|
||||
|
||||
- `h1` 제목은 페이지당 한 개만 사용할 수 있습니다.
|
||||
- 코드 블럭에서 터미널 언어 선택시 `cmd` 대신 `bash`를 사용합니다. (syntax highlighter를 사용하기 위해서)
|
||||
- 문서의 `h1` 제목은 반드시 현재 객체 이름과 같게 해야 합니다. (예시: `browser-window` → `BrowserWindow`)
|
||||
- 하이픈(-)으로 구분되었던 어떻게 되었던 간에 예시와 같이 작성합니다.
|
||||
- 헤더 밑에 헤더를 바로 사용하지 않습니다. 한 줄이라도 좋으니 헤더와 헤더 사이에 설명 추가합니다.
|
||||
- 메서드 헤더는 `code` 틱으로 표시합니다.
|
||||
- 코드 블럭에서 터미널 언어 선택시 `cmd` 대신 `bash`를 사용합니다.
|
||||
(syntax highlighter를 사용하기 위해서)
|
||||
- 문서의 `h1` 제목은 반드시 현재 객체 이름과 같게 해야 합니다.
|
||||
(예시: `browser-window` → `BrowserWindow`)
|
||||
- 하이픈(-)으로 구분되었건 다르게 구분되었건 예시와 같이 작성합니다.
|
||||
- 헤더 밑에 헤더를 바로 사용하지 않습니다. 한 줄이라도 좋으니 헤더와 헤더 사이에
|
||||
설명을 추가합니다.
|
||||
- 메서드 헤더는 `code backtick` 으로 표시합니다.
|
||||
- 이벤트 헤더는 한 '따옴표'로 표시합니다.
|
||||
- 리스트를 2 단계 이상 중첩하지 않습니다. (안타깝게도 markdown 랜더러가 지원하지 않습니다)
|
||||
- 섹션에 대한 제목을 추가합니다: Events, Class 메서드 그리고 인스턴스 메서드등.
|
||||
- 리스트를 2 단계 이상 중첩하지 않습니다. (안타깝게도 markdown 랜더러가 이를
|
||||
지원하지 않습니다)
|
||||
- 섹션에 대한 제목을 추가합니다. Events, Class 메서드 그리고 인스턴스 메서드 등
|
||||
- 어떤 '것'의 사용 결과를 설명할 때 '될 것입니다' 형식을 사용하여 설명합니다.
|
||||
- 이벤트와 메서드에는 `h3` 헤더를 사용합니다.
|
||||
- 이벤트와 메서드를 표기할 땐 `h3` 헤더를 사용합니다.
|
||||
- 선택적 인수는 `function (required[, optional])` 형식으로 작성합니다.
|
||||
- 선택적 인수는 목록에서 호출되면 표시합니다.
|
||||
- 문장의 길이는 한 줄당 80 칸을 유지합니다.
|
||||
|
@ -30,11 +36,13 @@ Electron 문서를 작성하는 규칙은 다음과 같습니다.
|
|||
|
||||
아직 번역되지 않은 언어를 추가하려면 (일부분 포함):
|
||||
|
||||
- 언어의 약어(예: en, ja, ko등)로 서브 디렉터리를 만듭니다.
|
||||
- 서브 디렉터리에 `docs` 디렉터리를 복사합니다. 파일 이름과 디렉터리 구조는 모두 유지합니다.
|
||||
- 언어의 약어(예: en-US, ja-JP, ko-KR)로 서브 디렉터리를 만듭니다.
|
||||
- 서브 디렉터리에 `docs` 디렉터리를 복사합니다. 파일 이름과 디렉터리 구조는
|
||||
모두 유지합니다.
|
||||
- 문서를 번역합니다.
|
||||
- `README.md`에 번역한 문서의 링크를 추가하고 업데이트 합니다.
|
||||
- 메인 Electron의 [README](https://github.com/atom/electron#documentation-translations)에 번역된 디렉터리의 링크를 추가합니다.
|
||||
- 언어 디렉터리 내의 `README.md`에 번역한 문서의 링크를 추가합니다.
|
||||
- 메인(upstream) Electron의 [README](https://github.com/atom/electron#documentation-translations)에
|
||||
번역된 언어 디렉터리의 링크를 추가합니다.
|
||||
|
||||
## Electron 문서 읽기
|
||||
|
||||
|
@ -42,7 +50,8 @@ Electron 문서 구조를 이해하는 데 참고할 수 있는 유용한 도움
|
|||
|
||||
### Methods
|
||||
|
||||
[Method](https://developer.mozilla.org/en-US/docs/Glossary/Method) 문서의 예제입니다:
|
||||
[Method](https://developer.mozilla.org/en-US/docs/Glossary/Method) 문서의
|
||||
예제입니다:
|
||||
|
||||
---
|
||||
|
||||
|
@ -53,8 +62,8 @@ Electron 문서 구조를 이해하는 데 참고할 수 있는 유용한 도움
|
|||
|
||||
---
|
||||
|
||||
메서드 이름은 인수가 무엇을 받는지에 따라 결정됩니다. 선택적 인수는 브라켓([, ])으로 묶어
|
||||
이 인수가 다른 인수뒤에서 선택적으로 사용될 수 있다는 것을 표시합니다.
|
||||
메서드 이름은 인수가 무엇을 받는지에 따라 결정됩니다. 선택적 인수는 브라켓([, ])으로
|
||||
묶어 이 인수가 다른 인수뒤에서 선택적으로 사용될 수 있다는 것을 표시합니다.
|
||||
|
||||
메서드 이름 하단에선 각 인수에 대해 자세한 설명을 합니다.
|
||||
인수의 타입은 일반적인 타입 중 하나를 받거나:
|
||||
|
@ -62,7 +71,8 @@ Electron 문서 구조를 이해하는 데 참고할 수 있는 유용한 도움
|
|||
[`Number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number),
|
||||
[`Object`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object),
|
||||
[`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
|
||||
와 같은 일반적으로 쓰이는 타입 중 하나를 받거나 Electron의 [`webContent`](api/web-content.md)같은 커스텀 타입을 받습니다.
|
||||
와 같은 일반적으로 쓰이는 타입 중 하나를 받거나 Electron의
|
||||
[`webContent`](api/web-content.md)같은 커스텀 타입을 받습니다.
|
||||
|
||||
### Events
|
||||
|
||||
|
@ -78,8 +88,9 @@ Returns:
|
|||
|
||||
---
|
||||
|
||||
이벤트는 `.on` 리스너 메서드로 사용할 수 있습니다. 만약 이벤트에서 값을 반환한다면 문서에서 표시된 대로
|
||||
일정한 타입의 값을 반환합니다. 이벤트를 처리하거나 응답하려 한다면 다음과 같이 사용할 수 있습니다:
|
||||
이벤트는 `.on` 리스너 메서드로 사용할 수 있습니다. 만약 이벤트에서 값을 반환한다면
|
||||
문서에서 표시된 대로 일정한 타입의 값을 반환합니다. 이벤트를 처리하거나 응답하려 한다면
|
||||
다음과 같이 사용할 수 있습니다:
|
||||
|
||||
```javascript
|
||||
Alarm.on('wake-up', function(time) {
|
||||
|
|
|
@ -545,7 +545,7 @@ Enters or leaves the kiosk mode.
|
|||
|
||||
Returns whether the window is in kiosk mode.
|
||||
|
||||
### `win.hookWindowMessage(message, callback)` _WINDOWS_
|
||||
### `win.hookWindowMessage(message, callback)` _Windows_
|
||||
|
||||
* `message` Integer
|
||||
* `callback` Function
|
||||
|
@ -553,19 +553,19 @@ Returns whether the window is in kiosk mode.
|
|||
Hooks a windows message. The `callback` is called when
|
||||
the message is received in the WndProc.
|
||||
|
||||
### `win.isWindowMessageHooked(message)` _WINDOWS_
|
||||
### `win.isWindowMessageHooked(message)` _Windows_
|
||||
|
||||
* `message` Integer
|
||||
|
||||
Returns `true` or `false` depending on whether the message is hooked.
|
||||
|
||||
### `win.unhookWindowMessage(message)` _WINDOWS_
|
||||
### `win.unhookWindowMessage(message)` _Windows_
|
||||
|
||||
* `message` Integer
|
||||
|
||||
Unhook the window message.
|
||||
|
||||
### `win.unhookAllWindowMessages()` _WINDOWS_
|
||||
### `win.unhookAllWindowMessages()` _Windows_
|
||||
|
||||
Unhooks all of the window messages.
|
||||
|
||||
|
|
Loading…
Reference in a new issue