Electron

Electron, 5 분 만에 'Hello, World'

iKay 2018. 10. 10. 00:15
반응형

0. 들어가며

  Javascript라는 하나의 언어로 front end뿐만 아니라 back end에서도 비교적 쉽게 프로그래밍이 가능하다. 뿐만 아니라 Electron을 이용하면 데스크톱 앱도 만들 수 있다. 실제로, Slack desktop app, Visual Studio Code, Discord 등이 Electron을 이용해 만들어 졌다고한다. 이처럼, Javascript는 다방면에서 활용될 수 있기 때문에 최근 인기를 많이 얻고 있는 언어라고 생각한다. 앞으로 수준이 낮고 짧은 프로젝트가 될 것 이지만, Electron이 어떤 녀석인지 학습해 보고자 여기에 Electron과 관련된 글을 당분간 포스팅 할 예정이다.   

 

  오늘은 Electron을 설치해보고, 간단히 'Hello, World'를 출력해본다. 

 

1. 설치하기

  우선 NodeJS와 npm이 설치돼있어야 한다. 이 둘이 정상적으로 설치됐다면 커맨드 창에 다음 명령어를 입력하면, 다음과 같이 버전이 확인된다. 

$ node -v
v8.9.3

$ npm -v
5.5.1
 

  그러면 Electron을 설치할 준비가 된 것이다. 다음 명령어를 입력해 Electron을 설치하자. 이때, -g 옵션을 줘 전역 설치를 해주자. 

 

$ npm install -g electron-prebuilt

 

 

  설치 후, 설치확인을 다음 명령어를 입력해 확인한다.  

 

$ electron --version

v1.4.13

 

  이처럼 Electron을 설치하는 것은 매우 쉽다. 'Hello, World'를 출력하는 것도 매우 쉬울 것이다. 

 

2. Hello, World

 

  우선 project 디렉토리를 하나 생성하자. 개인적으로 '../path/to/electron/hello_world' 와 같이 project 디렉토리를 생성했다. 항상 npm을 통해 project를 진행한다면 package.json이 반드시 필요하다. package.json에는 프로젝트 버전, 의존성, 실행 파일 등등... 저장된다. 따라서 npm을 통해 project를 한다면 습관적으로 npm init을 해주는 것이 좋다. 

 

$ npm init

$ cat package.json
{
  "name": "helloWorld",
  "version": "0.0.1",
  "description": "",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "MIT"
}

 

  Electron은 electron을 구동시킬 때 실행되는 main process와 각각의 BrowserWindow 모듈에 의해 생성되는 renderer process 를 갖는다. 여기에 대한한 개념은 후에 다시 포스팅 하겠다. 여튼 main process, renderer process 두 가지가 있음을 알고 넘어가자. 

   

  프로젝트 디렉토리에서 main.js를 생성하고 아래와 같이 코드를 입력한다. main.js는 electron에 의해 실행될 파일이다. 아래 소스를 보면 알겠지만 BrowserWindow 모듈(클래스)은 창을 생성할 때 디자인 리소스를 어디서 가져오는지, 창을 얼마나 크게 만들 것인지 등 창에 대한 역할을 할 것으로 예상된다. 

 

/* main.js */

const {app, BrowserWindow} = require('electron');

let win  

function createWindow() { 
   win = new BrowserWindow({width: 800, height: 600});
   /* load local .html file*/
   win.loadURL(`file://${__dirname}/index.html`);
}  

app.on('ready', createWindow); 

 

 

  또한, index.html을 생성하고 아래와 같이 코드를 입력한다. 위 소스코드를 보면 알겠지만 index.html은 app이 실행될 때, BrowserWindow 모듈에 의해 제공되는 리소스로 창의 디자인이라고 볼 수 있다. 

 

<!-- index.html-->

<html>
  <body>
    <h1>Hello, World</h1>
  </body>
</html>

 

 

  프로젝트 디렉토리에서 다음 명령어를 커맨드 창에 입력하면, 'Hello, World'라는 글자가 있는 창이 뜬다. 

 

$ electron ./main.js

 

 

 

 

3. 결론

  이처럼 Electron을 통해 쉽고 간단히 데스크톱 앱에 'Hello, World'를 출력해봤다. 개인적으로 웹에 익숙하고, 창을 디자인 하는 부분을 HTML로 꾸밀 수 있기 때문에 데스트톱 앱을 디자인하는 것이 안드로이드, C++ GUI 등에 비해 수월하다고 느껴진다. 다음 포스팅에서는 Node modules을 win object에서 사용해보도록 하자.      

 

 

4. 소스코드

이번 포스팅에 대한 프로젝트 소스코드를 첨부.

 

https://github.com/hgs0426/electron/tree/master/hello_world

 

 

 

5. 참고

[1] https://www.tutorialspoint.com/electron/

 

[2] https://electronjs.org/

 

 

 

 

반응형