Node-Webkit 대 Electron [닫기]


81

크로스 플랫폼 데스크톱 애플리케이션을 구축 할 계획입니다. Node-Webkit 이 우리에게 완벽한 선택 이라는 것을 알았 습니다. 그러나 GitHub는 Node-Webkit을 사용하는 대신 Electron 이라는 자체 프레임 워크를 개발했습니다 .

그들 사이의 차이점은 무엇입니까?


2
E lectron vs N W.js (17 년 4 월). Stackoverflow 질문 E : 2,630 vs N : 269 , Github pull requests E : 102 vs N : 6 , Electron vs NW.js 및 마지막으로 Google Trends -Electron이 더 나은 선택 인 것 같습니다.
kinjelom

내 'index.html'을 가리킬 수 있기 때문에 'nw.js'를 선택했는데 제대로 작동합니다. 'nw.js'를 사용하면 'Electron'의 최상위 접근 방식에 브라우저가 볼트로 고정 된 'node.js'대신 'node.js'가 추가 된 브라우저 용으로 프로그래밍하는 느낌이 듭니다. 제 생각에는 패러다임이 더 좋습니다. 그리고 접근.
Daniel Sokolowski는

답변:


79

Electron에는 node-webkit과의 차이점을 설명하는 페이지가 있습니다.

https://github.com/atom/electron/blob/master/docs/development/atom-shell-vs-node-webkit.md

Node-Webkit과 마찬가지로 Electron은 JavaScript 및 HTML로 데스크톱 애플리케이션을 작성할 수있는 플랫폼을 제공하고 Node 통합을 통해 웹 페이지의 저수준 시스템에 대한 액세스 권한을 부여합니다.

그러나 Electron을 Node-Webkit과 완전히 별개의 제품으로 만드는 두 프로젝트 사이에는 근본적인 차이점도 있습니다.

1-신청서 입력

NW.js에서 애플리케이션의 주요 진입 점은 웹 페이지 또는 JS 스크립트입니다. package.json에 html 또는 js 파일을 지정하면 응용 프로그램의 기본 창 (html 진입 점의 경우) 또는 스크립트가 실행될 때 브라우저 창에서 열립니다.

Electron에서 진입 점은 JavaScript 스크립트입니다. URL을 직접 제공하는 대신 수동으로 브라우저 창을 만들고 해당 API를 사용하여 html 파일을로드해야합니다. 또한 응용 프로그램을 종료 할시기를 결정하려면 창 이벤트를 수신해야합니다.

Electron은 Node.js 런타임과 더 비슷하게 작동하며 API는 더 낮은 수준입니다. phantomjs와 같은 웹 테스트 목적으로 Electron을 사용할 수도 있습니다.

2-빌드 시스템

전체 Chromium 빌드의 복잡성을 피하기 위해 Electron은 libchromiumcontent를 사용하여 Chromium의 콘텐츠 API에 액세스합니다. libchromiumcontent는 Chromium 콘텐츠 모듈과 모든 종속성을 포함하는 단일 공유 라이브러리입니다. 따라서 사용자는 원자 껍질을 만들기 위해 강력한 기계가 필요하지 않습니다.

3-노드 통합

Node-Webkit에서 웹 페이지의 Node 통합은 작동을 위해 Chromium 패치가 필요하지만 Electron에서는 Chromium 해킹을 방지하기 위해 libuv 루프를 각 플랫폼의 메시지 루프에 통합하는 다른 방법을 선택했습니다. 그 방법은 node_bindings 코드를 참조하십시오.

4-다중 컨텍스트

숙련 된 Node-Webkit 사용자 인 경우 Node 컨텍스트 및 웹 컨텍스트의 개념에 익숙해야합니다. 이러한 개념은 Node-Webkit이 구현 된 방식 때문에 만들어졌습니다.

Node의 다중 컨텍스트 기능을 사용함으로써 Electron은 웹 페이지에 새로운 JavaScript 컨텍스트를 도입하지 않습니다.

소스 코드 보호

Electron 은 애플리케이션의 보호되지 않은 소스 코드를 포함하는 asar 로 애플리케이션을 패키징하고 있습니다. 이를 통해 사용자가 알지 못하는 사이에 애플리케이션 1이 애플리케이션 2를 추출하고 취약한 스크립트를 삽입 할 수 있습니다. GitHub에서이 프로젝트를 확인하여 예를 들어 Slack 앱을 조작하는 방법의 예를 볼 수 있습니다 . 현재 Electron 팀은 소스 코드 보호 지원을 구현할 계획이 없습니다 .

NW.js소스 코드를 보호 된 바이너리로 컴파일하기위한 지원을 내장했습니다 .


3
이제 node-webkit의 이름이 NW로 변경되었습니다
Marwen Trabelsi

70
이 기사는 Electron의 repo에서 왔기 때문에 Electron에 약간 편향 될 수 있습니다.
gbmhunter 2015

7
nw.js는 즉시 Chrome 앱을 실행할 수 있습니다. 이는 Chrome Webstore의 앱이 곧 고아가 될 많은 프로그래머에게 가치가 있습니다.
marlar

16
나는 최근에 둘 다 사용해 보았고 그것에 대한 블로그 게시물을 썼습니다 . nw.js가 실제로 Electron보다 더 간단하고 사용하기 쉽다는 것을 알았습니다. 웹 페이지를 가져 와서 nw.js에 놓고 이동하는 것은 매우 쉽습니다. Electron은 설정하기가 더 복잡하고 다중 프로세스 설계로 인해 간단한 작업을 수행하기 위해 험난한 작업을 수행해야합니다. Electron은 훨씬 더 풍부한 플랫폼 통합 API를 제공하므로 애플리케이션에서 기본 Mac / Windows / Linux 기능을 더 광범위하게 사용할 수 있습니다.
Ming-Yee Iu

3
또한 Node.js가 브라우저를 지원하는 Electron의 Node.js 접근 방식보다 디자인이 훨씬 더 깔끔하고 작업하기 쉬운 Node.js와 함께 NW.js 브라우저를 먼저 발견했습니다. NW.js에서는 브라우저 용으로 코딩하고 Electron에서는 Node.js 용으로 코딩하고 있습니다.
Daniel Sokolowski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.