NW.js, Brackets-Shell 및 Electron의 기능적 차이점은 무엇입니까?


151

이제 TideSDK가 실제로 죽었으므로 HTML / CSS / JS 응용 프로그램을 독립 실행 형 데스크톱 응용 프로그램으로 실행하기 위해 대체 '래퍼'를 살펴 보았습니다. 지금까지 실행 한 세 가지 실행 가능한 옵션은 NW.js (이전의 node-webkit), brackets-shellElectron (이전의 atom-shell)입니다.

문제는 기능 세트, 호환성 등의 측면에서 세 가지를 충분히 비교하지 못하는 것 같습니다. 특히 세 가지 :

  • 플랫폼 지원 ; 운영 체제, 종속성 등
  • HTML5, CSS3 및 JavaScript에 관한 한 언어 기능 지원 . 같은 것들을 생각 ", 그리고 그렇다면, 어떤 코덱을 사용할 수 HTML5 비디오 작업이다합니까?"
  • 트레이 아이콘, 팝업 알림 및 OS 렌더링 메뉴 표시 줄과 같은 비표준 추가 기능 .
  • 확장 성 ; 예. 네이티브 코드를 '플러그인'하고 Node.js와 대화하는 등의 기능.
  • 건축술 ; 특히 개발자로서의 일상적인 사용에 영향을 미치는 구조적 차이.
  • 디버깅 ; 개발 툴, 자주 사용되는 툴과의 호환성 node-inspector등 포함
  • ... 등등.

응용 프로그램 개발자로 선택할 때 중요한 객관적, 기술적 차이점은 무엇입니까?


그 동안의 차이점을 살펴본 적이 있습니까? 이번 주말에 파기를 할 수도 있습니다
stefan

@stefan 아직, no : / 나는 실용적인 의미에서 node-webkit을 약간 실험했지만 아직 그 이상을 얻지 못했습니다. 차이점에 대한 공식적인 문서를 찾는 데
익숙

3
여기, atom-shell 팀인 github.com/atom/atom-shell/blob/master/docs/development/… 에 의해 요약 된 node-webkit과 atom-shell의 주요 차이점이 있습니다.
sepulchered

2
방에있는 코끼리는 어떻습니까 : 디버깅. nw.js를 사용하고 있으며 Linux 플랫폼을 사용하여 개발할 때 디버깅이 부족하다는 것을 알았습니다. 대규모 응용 프로그램을 개발하려면 디버깅이 중요한 기능 IMO입니다. 대화 할 바람직한 기능 목록에 디버깅을 추가 할 수 있습니까?
Timothy C. Quinn

@JavaScriptDude 감사합니다. 목록에 추가했습니다.
Sven Slootweg

답변:


42

나는 약 2 개월 전에 비슷한 연구를했으며 결국 노드-웹킷과 함께 갔다. node-webkit의 가장 큰 장점은 node.js와 npm입니다. npm의 패키지 관리는 정말 좋으며 노드는 파일 시스템 액세스를 잘 수행했습니다.

대괄호-쉘은 흥미로워 보였지만 멋진 IDE 이외의 다른 것보다 더 좋거나 더 좋은 것을 얻지 못했습니다. 그들은 "브래킷-쉘은 브라켓 프로젝트에 의해서만 유지된다"는 비명을 지르고있다.

https://github.com/adobe/brackets-shell#overview

Atom-shell은 최근에 활성화 된 것으로 보이지만 실제로는 웹킷 런타임에 첨부되는 실제 작성 및 편집기 / IDE라는 점에서 대괄호처럼 보입니다. 또한 node.js 위에 구축됩니다. 중학교 화학을 상기시키지 않고 온라인으로 물건을 검색하기가 어렵다는 단점이 있습니다.

나는 정말로 새로운 편집자를 원하지 않으며 대부분의 프로그래머는 이미 좋아합니다. 실제 응용 프로그램 개발의 경우 거의 동일하게 작동하며 모두 웹킷을 사용하므로 작동해야합니다. 기본적으로 웹 사이트처럼 90-95 %를 쓴 다음 기본 부분 및 일부 구성을 처리합니다.

이러한 것들은 Windows, Mac 및 Linux 언어 지원-HTML5, CSS3 및 Javascript에서 실행되는 세 가지 플랫폼 모두에 해당됩니다. Javascript를 실행하기 때문에 원하는 거의 모든 라이브러리 / 프레임 워크를 다운로드하여 실행할 수 있습니다.

웹킷의 큰 경고는 코덱 지원입니다. 일반적으로 dll /을 지원하도록이를 재구성하지 않으면 비디오가 아닌 비디오 코덱에 문제가 발생합니다. 예를 들어 배송 된 노드 웹킷은 mp4 비디오를 재생하지 않습니다.


괄호 셸과 아톰 셸의 MP4 재생과 관련하여 어떤 차이가 있는지 자세히 설명해 주시겠습니까? 이것이 대부분의 WebKit 배포판에서 기발한 것인지 또는 노드 웹킷에서 기발한 것인지 귀하의 답변에서 명확하지 않습니다.
Sven Slootweg

MP4 재생이 문제가되는 것은 웹킷 문제입니다. 웹킷은 실제로 크롬의 핵심이라는 것을 기억해야하며, AV 기술이 개방적이고 무료 인 경우를 제외하고는 즉시 사용할 수 없습니다. 표준 답변은 ffmpegsumo를 교체 / 재 구축하는 것입니다. 현재 Chrome 설치에서 다른 것으로 바꾸면 꽤 잘 작동하는 것 같습니다.
John W. Clark

1
Brackets가 내장되어 bracket-shell있고 Atom이 내장되어 atom-shell있기 때문에 원하는 편집기 나 IDE를 사용하여 코드를 작성할 수 있습니다. OP가 원하는 것은 3의 기술적 차이점에 대한 것입니다. 3 개의 런타임과 유사한 환경에서 TodoMVC와 같은 것을 보는 것이 좋습니다.
Ehtesh Choudhury

@SvenSlootweg 코덱 지원은 사용중인 웹킷과 함께 사용되는 라이브러리에 관한 것입니다. 세 가지 모두 Chromium을 웹킷 기반으로 사용하므로 모두 동일한 코덱 문제가 있으며 동일한 방식으로 해결할 수 있습니다.
John W. Clark


40

나는 지난 며칠 동안 Atom-Shell 과 놀고 있었고 지금까지 그것을 좋아합니다.

그것에 대한 가장 좋은 부분은 GitHub에 의해 뒷받침된다는 것입니다. 특히 플랫폼이 장기적으로 플랫폼에 정착 할 수 있어야합니다. Node.js 의 주요 공헌자StrongLoop 과의 계약으로 Node.js를 직접 개선함으로써 가능해졌습니다 (다른 회사, 심지어 Joyent보다 Node.js 핵심 개발자를 더 많이 고용한다고 주장함).

또한 시작하기가 다소 편하다는 것을 알았습니다. 구조를 배우고 첫 번째 개념 증명을 실행하는 데 하루가 걸렸습니다. 매우 시원합니다.


중요 항목:

  • 플랫폼 지원 : Windows, Linux, Mac OSX ( 추가 정보 여기 )
  • 언어 기능 지원 : HTML5, CSS3, Chromium을 통한 JS-지금까지 문제가 없었지만 비디오를 구체적으로 테스트하지는 않았습니다.
  • 기본 기능 : 기본 앱 메뉴, 작업 트레이 지원, 전역 단축키, 프로토콜 처리기 지원 (지금까지 본 것)
  • 확장 성 : 뛰어난 Node.js 통합으로 클라이언트와 서버 모두 Node.js 모듈과 기본 요소를 "필수"할 수 있습니다. 또한 문제없이 Bower 라이브러리 (jQuery 포함)를 성공적으로 테스트 했습니다.
  • 건축 : 다른 점에서 다루었지만 일반적으로 매우 매끄 럽습니다.

업데이트 (11/25/14) : 공식 용량에서 Atom-Shell의 유스 케이스를 아직 찾지 못했지만 내 용도에 맞는 몇 가지 작은 앱을 빌드하는 데 사용했습니다. PM 소프트웨어에서 시간이 기록되고 Paypal 송장이 생성됩니다.

플랫폼에 대한 나의 의견은 여전히 ​​긍정적입니다. 꽤 굉장합니다.

내 인보이스 앱에서 Bootstrap 3의 대시 보드 예제 템플릿 과 몇 가지 노드 모듈 (블루 버드, 페이팔 SDK, 팀워크 PM 클라이언트)을 가져 와서 약간 복잡한 앱을 만들었습니다. 그것은 며칠이 걸렸고 잘 작동합니다.

나는 견고하고 안정적이며 빠르며 코딩하기 쉬운 Atom-Shell에 대해 부정적인 것을 생각할 수 없습니다. 나는 이것이 누군가를 돕기를 바랍니다.


특히 node-webkit과의 차이점을 자세히 설명 할 수 있습니까? 내가 알 수있는 한,이 포인트의 모든 (대부분?)도 node-webkit에서 제공되지만 누락 된 것이 있는지 확실하지 않습니다.
Sven Slootweg

안녕하세요 luke는 자체적으로 atom-shell 응용 프로그램을 업데이트 할 수 있습니까?
Kapoor Munish

@SvenSlootweg 죄송합니다. 몇 달 전에 귀하의 의견을 놓쳤습니다. 불행히도 나는 node-webkit에 정통하지 않으며 두 가지를 효과적으로 비교할 수 없습니다. 그러나 나는 이 StrongLoop 기사를 읽었 습니다. 적어도 Atom-Shell이 ​​새로운 지평을 열었다 는 것을 나타냅니다. : \
Luke Chavers

@MunishKapoor 개발을 위해? 최신 릴리스를 다운로드 할 수 있습니다. 이전 원자 디렉토리의 이름을 바꾸고 새 디렉토리로 바꿉니다. "npm update"와 같은 멋진 프로세스가있을 수 있지만 조사하지는 않았습니다. 클라이언트에서 app + atom 셸을 업데이트하기 위해 직접적으로 해결하지는 않으며 설치 프로그램이나 다른 외부 플랫폼을 사용할 것으로 예상됩니다. 그래도이 문서는 흥미로운 문서에서 발견 되었습니다 .
Luke Chavers

1
@ Moonwalker 예, 포장에 " Asar " 라는 앱을 사용합니다 . ( "응용 프로그램 포장"참조 ). 또한이 Node-Webkit / Atom-Shell 비교를 찾았습니다 .
Luke Chavers

22

NW.js는 웹 표준을 완벽하게 지원할뿐만 아니라 다음과 같은 기본 앱 개발을위한 비표준 기능 목록을 지원합니다.

메뉴, 트레이 등을 포함하여 위키에서 더 많은 것을 볼 수 있습니다.


3
키오스크 모드 Roger에서 +1 앞으로 사용할 기능이 될 것입니다. 희망적으로 디버깅 기능이 향상되어 nw.js를 유지할 수는 있지만 지금은 물을 테스트하기 위해 Atom Electron으로 전환하는 것을 진지하게 고려하고 있습니다. nw.js의 디버깅이 약간 필요하다는 것을 알았습니다.
Timothy C. Quinn

나는 거기에 "JS 소스 보호"가 포함되는 것에 대해 약간 걱정하고있다. 그것이 작동하지 않는다는 점에서 DRM과 같은 클래스에있다. 처음부터 "보호"할 필요가없는 것만 "보호"합니다. 나에게 기능으로 광고 해야하는 것 같지 않습니다.
Sven Slootweg

1
웹용 DRM과 다릅니다. JS 프로그래머는 네이티브 응용 프로그램을 개발할 때 소스 코드를 컴퓨터 코드로 컴파일하는 것을 비롯하여 C ++ 프로그래머가 할 수있는 모든 작업을 수행 할 수 있어야합니다.
Roger Wang

@JavaScriptDude devtools를 의미합니까? 다음 버전 (0.13)에서는 경험이 Chrome 브라우저와 거의 동일합니다.
Roger Wang

@알았다. 답변이 지연되어 죄송합니다. 예, devtools. 나는 다음과 같은 제한 사항이 있음을 발견했으며 그 중 일부는 devtools 자체에있을 수 있습니다. 1) 새로운 창 디버깅이 시작되지 않았습니다. 2) 원격 디버깅이 작동하지 않았습니다. 3) 중단 점을 불러올 수 없음, 변수 및 소스 열림 (앱을 다시 시작할 때마다 모든 설정이 지워짐) 4) (실제로 큰) require ()로로드 된 코드를 디버깅 할 수 없습니다.
Timothy C. Quinn

10

나는 한동안 대괄호로 작업 해 왔으며, 여기 내 발견 사항이 있습니다.

  • brackets-shell은 주로 brackets IDE 프로젝트에서 쉘로 개발되지만 프로젝트는 모든 웹 응용 프로그램을 실행할 수 있습니다. 당신은 당신의 자신의 HTML 페이지를 가리켜 야합니다. Clint Berry는이 작업에 대한 훌륭한 자습서를 작성했습니다. http://clintberry.com/2013/html5-desktop-apps-with-brackets-shell/
  • 이 프로젝트는 Adobe의 지원을받으며 많은 활동이 있습니다.
  • 문서가 더 나을 수 있습니다

  • 플랫폼 지원 Windows, Mac 및 Linux를 지원합니다. 설치 관리자 패키지도 만들 수 있습니다. 나는 Win과 Mac에서만 테스트했으며 훌륭하게 작동합니다.

  • 기능 지원 html5, css3, js. Html5 비디오는 기본적으로 작동하지 않지만 활성화하기가 매우 쉽습니다 (기본적으로 ffmpegsumo.dll은 스크립트를 복사하도록 변경하면 설치 프로그램에 복사되지 않습니다).
  • 기본 기능 메뉴 표시 줄, '파일 열기', 파일 시스템 액세스 노드 프로세스와의 통신 만 있으면되므로이 중 하나를 사용하지 않습니다.
  • nodejs가 내장 된 확장 성 으로, 웹 애플리케이션에서 노드와 통신 할 수 있습니다. 이런 방식으로 노드를 사용하여 파일 시스템 등에 액세스 할 수 있습니다.
  • 아키텍처이 프로젝트는 잘 설정되어 있으며, 쉘 프로젝트와 프로젝트 내에서 실행중인 웹 응용 프로그램을 훌륭하게 분리합니다. 자체 응용 프로그램에서 전역 appshell 객체를 사용하여 대괄호 기능 (파일 시스템 액세스, 노드 프로세스와의 통신 등)에 액세스 할 수 있습니다.

6
내가 Brackes-shell에서 멀어지게 한 것은 그들 자신의 개요였습니다. github.com/adobe/brackets-shell "참고 : brackets-shell은 Brackets 프로젝트에서만 사용하도록 유지됩니다. 일부 사람들은 다른 프로젝트의 app shell로 성공한 적이 있지만 공식적으로 제공하지는 않습니다. 우리는 앱 셸을 쉽게 재사용 할 수 있도록하기 위해 많은 노력을 기울이지 않았습니다. 많은 사람들이 설계 상보다 일반적인 node-webkit과 같은 프로젝트를 더 쉽게 사용할 수있을 것입니다. "
John W. Clark

5

주목해야 할 것은 Electron이 공식적으로 Windows Vista를 지원하지 않는다는 것입니다. Vista의 시장 점유율은 OSX 10.9와 10.10 사이의 중간 정도입니다 (둘 다 Electron이 완전히 지원합니다). Vista는 2017 년까지 Microsoft에서 계속 지원합니다.

NW.js는 OSX 10.9 이상뿐만 아니라 Vista에서도 잘 작동합니다. NW.js는 Ubuntu, Debian, Zorin, Manjaro, Arch 및 기타 데비안 기반 Linux OS에서 작동합니다. Electron은 관련 플랫폼에서 우분투 관련 버그를 수정하기 위해 PR을 거부했습니다.

NW.js는 XP에서도 작동합니다. 현재 시장의 18 %는 여전히 XP에 있습니다. 따라서 데스크톱 응용 프로그램이 더 일반적인 목적이거나 XP에서 여전히 최신 채택 자에게 액세스하려는 경우 Electron은 Win 7 이상 만 지원하므로 NW.js (0.14.7)를 사용하는 것이 좋습니다.

NW.js 0.12.3을 사용하는 경우 OSX 10.6 이상 및 데비안 기반 Linux OS의 이전 버전 인 Ubuntu 및 Win XP +도 지원할 수 있습니다. 그래도 레거시 시스템에 대해서만 특수 빌드를 수행하고 최신 OS에는 최신 버전의 NW.js를 사용하는 것이 좋습니다.


1
MS가 그 후에 지원을 중단하지 않았다-지원은 2015 년 말까지 연장되었다 -chrome.blogspot.com/2015/04/…
Karol

전자 (원자 쉘)는 RHEL 6.6 이하에서 실행되지 않으며 해당 배포판에서 소스 코드를 컴파일 할 수 없습니다.
Michael Kruglos


nw-builder 를 사용하여 MAS 버전을 만들 수 있습니다 . 있다 팔이 NW.js에 대한 빌드 뿐만 아니라.
Jaredcheeda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.