크로스 플랫폼 데스크톱 애플리케이션을 구축 할 계획입니다. Node-Webkit 이 우리에게 완벽한 선택 이라는 것을 알았 습니다. 그러나 GitHub는 Node-Webkit을 사용하는 대신 Electron 이라는 자체 프레임 워크를 개발했습니다 .
그들 사이의 차이점은 무엇입니까?
크로스 플랫폼 데스크톱 애플리케이션을 구축 할 계획입니다. Node-Webkit 이 우리에게 완벽한 선택 이라는 것을 알았 습니다. 그러나 GitHub는 Node-Webkit을 사용하는 대신 Electron 이라는 자체 프레임 워크를 개발했습니다 .
그들 사이의 차이점은 무엇입니까?
답변:
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 는 소스 코드를 보호 된 바이너리로 컴파일하기위한 지원을 내장했습니다 .