SlideShare a Scribd company logo
1 of 17
Download to read offline
Electron Main Process
엿보기
Electron
Electron
자기소개
이대환
Email : redface0512@gmail.com
Twitter : JazzyRedface
Electron
Electron은 Main Process / Renderer
Process의 조합
• 이름만 유추해 보면 화면에서 Rendering 관련 역할을 하고 안하고에 따라서 달라
진다.
• 실제로도 그렇다.
• 식별자를 통해서, 그리고 간단한 테스트를 통해서 구별이 가능함 (뒤에 가서 다
루겠음)
Electron
Main Process만 한번 살펴보자
• Main Process란?
• Web Page Manager
• 웹페이지를 생성하고 관리하는 역할을 한다
• 웹페이지는 여러개 생성할 수 있다.
• 한개의 메인프로세스가 여러개의 웹페이지를 관리 가능
• 하지만 웹페이지에 관련한 직접적인 일은 하지 않음
Electron
Main Process만 한번 살펴보자
• Main Process란?
• Web Page Manager
• 하지만 웹페이지에 관련한 직접적인 일은 하지 않음
• Renderer Process가 대신 일함
• 한개의 Renderer Process가 한개의 웹페이지에서 직접 일함
• 메인프로세스가 명령을 하고, Renderer Process가 요청을 하면 일을 처리
해주고 결과를 내려준다.
Electron
Main Process는 어떻게 작동하나?
• 웹페이지를 생성해보자
• var app = require(‘app’); // 어플리케이션 생성주기 컨트롤 객체
• app.on(‘ready’, function () { // Init }); // 웹페이지 생성을 위한 준비가 다
되었을때의 상태, 준비가 되어야 웹페이지 생성이 가능하다.
• var mainWindow = new BrowserWindow({width: 넓이, height: 높이}); //
웹페이지를 띄우기 위한 인스턴스 생성
• mainWindow.loardURL(‘정적 html 파일 경로’); // 실제로 부르기 위한 정적페
이지 호출
• 위의 mainWindow는 app.on(‘ready’, function (){}); 안에서 실행되어야
한다, 그렇지 않으면 [Error: Cannot create BrowserWindow before
app is ready]라는 에러가 발생
Electron
Main Process는 어떻게 작동하나?
• process
• 어디서든지 접근 가능한 Global Object
• NodeJS의 process 다른점이 몇가지 존재한다
• process.type, process.versions, process.resourcePath, process.mas
등등
• 환경마다 process는 다르다
• process의 타입 식별자(process.type)에 따라서 구분이 가능
Electron
Main Process, Renderer Process 구분하기
• process.type이 어떤환경의 process인지 말해준다.
• console.log(process.type === ‘browser’ ? ‘Main Process’ :
‘Renderer’); // 이거를 Main 코드와 HTML 코드에 각각 심어보자
• 이제 호적등본 다 때서 관계가 확실해진다 :)
Electron
Renderer Process가 여러개라면?
• process.pid
• console.log(process.pid); // 웹 페이지를 여러개 생성하여 pid값을 비교
• 동일한 HTML일지라도, 웹 페이지가 다르면 식별자가 다르다.
• 웹페이지별 Renderer process가 다르다는걸 보여줌.
Electron
Main Process API들 몇몇 살펴보기
• Main/Renderer process들의 api가 다르다, 하지만 같이 쓸 수 있는 api 도 존재
한다.
• app
• Application의 생성주기를 관리하는 객체
• 생성주기 이벤트에 따라서 액션을 지정할 수 있다.
• app.on(‘ready’, function(){}); 도 액션 주기중의 하나
Electron
Main Process API들 몇몇 살펴보기
• Main/Renderer process들의 api가 다르다, 하지만 같이 쓸 수 있는 api 도 존재
한다.
• app
• Application의 생성주기를 관리하는 객체
• 생성주기 이벤트에 따라서 액션을 지정할 수 있다.
• app.on(‘ready’, function(){}); 도 액션 주기중의 하나
Electron
Main Process API들 몇몇 살펴보기
• app
• Application의 생성주기를 관리하는 객체
• 생성주기 이벤트에 따라서 액션을 지정할 수 있다.
• before-quit, will-finish-launching, ready, close…..
• app.on(‘ready’, function(){}); 도 액션 주기중의 하나
Electron
Main Process API들 몇몇 살펴보기
• BrowserWindow
• 웹페이지 생성자
• Native properties들을 다양하게 설정 할 수 있다.
• width, height, kiosk, icon, frame…..
• 생성주기 이벤트에 따라서 액션을 지정할 수 있다.
• close, page-title-updated, focus……
Electron
Main Process API들 몇몇 살펴보기
• BrowserWindow
• 웹페이지 생성자
• Native properties들을 다양하게 설정 할 수 있다.
• width, height, kiosk, icon, frame…..
• 생성주기 이벤트에 따라서 액션을 지정할 수 있다.
• close, page-title-updated, focus……
Electron
Main Process API들 몇몇 살펴보기
• ipcMain
• message handler
• Main/Renderer process간의 통신 역할을 한다.
• Renderer에서 필요시, Main Process에 요청을 통해 특정 기능들을 처
리 가능
• 동기 / 비동기 통신 가능
Electron
Main Process API들 몇몇 살펴보기
• ipcMain
• message handler
• Main/Renderer process간의 통신 역할을 한다.
• Renderer에서 필요시, Main Process에 요청을 통해 특정 기능들을 처
리 가능
• 동기 / 비동기 통신 가능
Electron
여기까지…

More Related Content

What's hot

이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017devCAT Studio, NEXON
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018devCAT Studio, NEXON
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15Chanwoong Kim
 
실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기Haze Lee
 
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)JinKwon Lee
 
응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angularredribbon1307
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기JinKwon Lee
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017devCAT Studio, NEXON
 
[111] 네이버효과툰어떻게만들어졌나
[111] 네이버효과툰어떻게만들어졌나[111] 네이버효과툰어떻게만들어졌나
[111] 네이버효과툰어떻게만들어졌나NAVER D2
 
Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Chanwoong Kim
 
Python server-101
Python server-101Python server-101
Python server-101Huey Park
 
NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!
NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!
NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!영호 김
 
[C5]deview 2012 nodejs
[C5]deview 2012 nodejs[C5]deview 2012 nodejs
[C5]deview 2012 nodejsNAVER D2
 
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)NAVER D2
 
[145]5년간의네이버웹엔진개발삽질기그리고 김효
[145]5년간의네이버웹엔진개발삽질기그리고 김효[145]5년간의네이버웹엔진개발삽질기그리고 김효
[145]5년간의네이버웹엔진개발삽질기그리고 김효NAVER D2
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료shanka2
 
Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현병태 정
 
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화흥래 김
 

What's hot (20)

이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
 
실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기
 
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
 
응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
 
[111] 네이버효과툰어떻게만들어졌나
[111] 네이버효과툰어떻게만들어졌나[111] 네이버효과툰어떻게만들어졌나
[111] 네이버효과툰어떻게만들어졌나
 
Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅
 
Python server-101
Python server-101Python server-101
Python server-101
 
NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!
NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!
NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!
 
[C5]deview 2012 nodejs
[C5]deview 2012 nodejs[C5]deview 2012 nodejs
[C5]deview 2012 nodejs
 
Cooking jquery
Cooking jqueryCooking jquery
Cooking jquery
 
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
 
[145]5년간의네이버웹엔진개발삽질기그리고 김효
[145]5년간의네이버웹엔진개발삽질기그리고 김효[145]5년간의네이버웹엔진개발삽질기그리고 김효
[145]5년간의네이버웹엔진개발삽질기그리고 김효
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료
 
Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현
 
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
 

Similar to Electron mainprocess

K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용jinwook shin
 
코드잇-리액트-특강.pdf
코드잇-리액트-특강.pdf코드잇-리액트-특강.pdf
코드잇-리액트-특강.pdf이정환
 
웹:앱 기술 동향
웹:앱 기술 동향웹:앱 기술 동향
웹:앱 기술 동향ssuser0e53c8
 
201803 파이썬 세미나
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나JeongHwan Kim
 
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가? Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가? 정민 안
 
2조 프로젝트 보고서 김동현
2조 프로젝트 보고서 김동현2조 프로젝트 보고서 김동현
2조 프로젝트 보고서 김동현kdh24
 
이정환_구름에듀_특강.pdf
이정환_구름에듀_특강.pdf이정환_구름에듀_특강.pdf
이정환_구름에듀_특강.pdf이정환
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업NAVER D2
 
반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게Sungju Jin
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012devCAT Studio, NEXON
 
React native development
React native developmentReact native development
React native developmentSangSun Park
 
I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages SangHoon Han
 
Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Inho Kwon
 
JSP 프로그래밍 2014-2018년 출석수업대체시험 기출문제
JSP 프로그래밍 2014-2018년 출석수업대체시험 기출문제JSP 프로그래밍 2014-2018년 출석수업대체시험 기출문제
JSP 프로그래밍 2014-2018년 출석수업대체시험 기출문제Lee Sang-Ho
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
WAS의 동작과 WEB, Servlet, JSP_Wh apm
WAS의 동작과 WEB, Servlet, JSP_Wh apmWAS의 동작과 WEB, Servlet, JSP_Wh apm
WAS의 동작과 WEB, Servlet, JSP_Wh apm엑셈
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debuggingJongwon Han
 
전자정부표준프레임워크=오픈소스+Alpha
전자정부표준프레임워크=오픈소스+Alpha전자정부표준프레임워크=오픈소스+Alpha
전자정부표준프레임워크=오픈소스+AlphaKenu, GwangNam Heo
 

Similar to Electron mainprocess (20)

K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용K모바일발표 120113 남들보다뛰어난앱만들기_공유용
K모바일발표 120113 남들보다뛰어난앱만들기_공유용
 
코드잇-리액트-특강.pdf
코드잇-리액트-특강.pdf코드잇-리액트-특강.pdf
코드잇-리액트-특강.pdf
 
웹:앱 기술 동향
웹:앱 기술 동향웹:앱 기술 동향
웹:앱 기술 동향
 
201803 파이썬 세미나
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나
 
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가? Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
 
2조 프로젝트 보고서 김동현
2조 프로젝트 보고서 김동현2조 프로젝트 보고서 김동현
2조 프로젝트 보고서 김동현
 
이정환_구름에듀_특강.pdf
이정환_구름에듀_특강.pdf이정환_구름에듀_특강.pdf
이정환_구름에듀_특강.pdf
 
Essencia 2017
Essencia 2017Essencia 2017
Essencia 2017
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업
 
반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
React native development
React native developmentReact native development
React native development
 
Place site Design
Place site DesignPlace site Design
Place site Design
 
I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages I am ASP.NET Core Razor Pages
I am ASP.NET Core Razor Pages
 
Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기
 
JSP 프로그래밍 2014-2018년 출석수업대체시험 기출문제
JSP 프로그래밍 2014-2018년 출석수업대체시험 기출문제JSP 프로그래밍 2014-2018년 출석수업대체시험 기출문제
JSP 프로그래밍 2014-2018년 출석수업대체시험 기출문제
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
WAS의 동작과 WEB, Servlet, JSP_Wh apm
WAS의 동작과 WEB, Servlet, JSP_Wh apmWAS의 동작과 WEB, Servlet, JSP_Wh apm
WAS의 동작과 WEB, Servlet, JSP_Wh apm
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
 
전자정부표준프레임워크=오픈소스+Alpha
전자정부표준프레임워크=오픈소스+Alpha전자정부표준프레임워크=오픈소스+Alpha
전자정부표준프레임워크=오픈소스+Alpha
 

Electron mainprocess

  • 3. Electron Electron은 Main Process / Renderer Process의 조합 • 이름만 유추해 보면 화면에서 Rendering 관련 역할을 하고 안하고에 따라서 달라 진다. • 실제로도 그렇다. • 식별자를 통해서, 그리고 간단한 테스트를 통해서 구별이 가능함 (뒤에 가서 다 루겠음)
  • 4. Electron Main Process만 한번 살펴보자 • Main Process란? • Web Page Manager • 웹페이지를 생성하고 관리하는 역할을 한다 • 웹페이지는 여러개 생성할 수 있다. • 한개의 메인프로세스가 여러개의 웹페이지를 관리 가능 • 하지만 웹페이지에 관련한 직접적인 일은 하지 않음
  • 5. Electron Main Process만 한번 살펴보자 • Main Process란? • Web Page Manager • 하지만 웹페이지에 관련한 직접적인 일은 하지 않음 • Renderer Process가 대신 일함 • 한개의 Renderer Process가 한개의 웹페이지에서 직접 일함 • 메인프로세스가 명령을 하고, Renderer Process가 요청을 하면 일을 처리 해주고 결과를 내려준다.
  • 6. Electron Main Process는 어떻게 작동하나? • 웹페이지를 생성해보자 • var app = require(‘app’); // 어플리케이션 생성주기 컨트롤 객체 • app.on(‘ready’, function () { // Init }); // 웹페이지 생성을 위한 준비가 다 되었을때의 상태, 준비가 되어야 웹페이지 생성이 가능하다. • var mainWindow = new BrowserWindow({width: 넓이, height: 높이}); // 웹페이지를 띄우기 위한 인스턴스 생성 • mainWindow.loardURL(‘정적 html 파일 경로’); // 실제로 부르기 위한 정적페 이지 호출 • 위의 mainWindow는 app.on(‘ready’, function (){}); 안에서 실행되어야 한다, 그렇지 않으면 [Error: Cannot create BrowserWindow before app is ready]라는 에러가 발생
  • 7. Electron Main Process는 어떻게 작동하나? • process • 어디서든지 접근 가능한 Global Object • NodeJS의 process 다른점이 몇가지 존재한다 • process.type, process.versions, process.resourcePath, process.mas 등등 • 환경마다 process는 다르다 • process의 타입 식별자(process.type)에 따라서 구분이 가능
  • 8. Electron Main Process, Renderer Process 구분하기 • process.type이 어떤환경의 process인지 말해준다. • console.log(process.type === ‘browser’ ? ‘Main Process’ : ‘Renderer’); // 이거를 Main 코드와 HTML 코드에 각각 심어보자 • 이제 호적등본 다 때서 관계가 확실해진다 :)
  • 9. Electron Renderer Process가 여러개라면? • process.pid • console.log(process.pid); // 웹 페이지를 여러개 생성하여 pid값을 비교 • 동일한 HTML일지라도, 웹 페이지가 다르면 식별자가 다르다. • 웹페이지별 Renderer process가 다르다는걸 보여줌.
  • 10. Electron Main Process API들 몇몇 살펴보기 • Main/Renderer process들의 api가 다르다, 하지만 같이 쓸 수 있는 api 도 존재 한다. • app • Application의 생성주기를 관리하는 객체 • 생성주기 이벤트에 따라서 액션을 지정할 수 있다. • app.on(‘ready’, function(){}); 도 액션 주기중의 하나
  • 11. Electron Main Process API들 몇몇 살펴보기 • Main/Renderer process들의 api가 다르다, 하지만 같이 쓸 수 있는 api 도 존재 한다. • app • Application의 생성주기를 관리하는 객체 • 생성주기 이벤트에 따라서 액션을 지정할 수 있다. • app.on(‘ready’, function(){}); 도 액션 주기중의 하나
  • 12. Electron Main Process API들 몇몇 살펴보기 • app • Application의 생성주기를 관리하는 객체 • 생성주기 이벤트에 따라서 액션을 지정할 수 있다. • before-quit, will-finish-launching, ready, close….. • app.on(‘ready’, function(){}); 도 액션 주기중의 하나
  • 13. Electron Main Process API들 몇몇 살펴보기 • BrowserWindow • 웹페이지 생성자 • Native properties들을 다양하게 설정 할 수 있다. • width, height, kiosk, icon, frame….. • 생성주기 이벤트에 따라서 액션을 지정할 수 있다. • close, page-title-updated, focus……
  • 14. Electron Main Process API들 몇몇 살펴보기 • BrowserWindow • 웹페이지 생성자 • Native properties들을 다양하게 설정 할 수 있다. • width, height, kiosk, icon, frame….. • 생성주기 이벤트에 따라서 액션을 지정할 수 있다. • close, page-title-updated, focus……
  • 15. Electron Main Process API들 몇몇 살펴보기 • ipcMain • message handler • Main/Renderer process간의 통신 역할을 한다. • Renderer에서 필요시, Main Process에 요청을 통해 특정 기능들을 처 리 가능 • 동기 / 비동기 통신 가능
  • 16. Electron Main Process API들 몇몇 살펴보기 • ipcMain • message handler • Main/Renderer process간의 통신 역할을 한다. • Renderer에서 필요시, Main Process에 요청을 통해 특정 기능들을 처 리 가능 • 동기 / 비동기 통신 가능