2014-05-07 18 views
50

Planujemy zbudować aplikację desktopową dla wielu platform. Okazało się, że Node-Webkit jest dla nas idealnym wyborem. Ale GitHub opracował własny framework o nazwie Electron zamiast Node-Webkit.Node-Webkit kontra Electron

Jaka jest różnica między nimi?

+2

** E ** lectron kontra ** N ** W.js (April'17). Stackoverflow questions [E: 2,630] (http://stackoverflow.com/questions/tagged/electron) vs [N: 269] (http://stackoverflow.com/questions/tagged/nw.js), Github pull wnioski [E: 102] (https://github.com/electron/electron/pulse/monthly) vs [N: 6] (https://github.com/nwjs/nw.js/pulse/monthly), aplikacje zbudowane na [Electron] (https://electron.atom.io/apps/) kontra [NW.js] (https://github.com/nwjs/nw.js/wiki/List-of-apps-and -companies-using-nw.js) i wreszcie [Google Trends] (https://trends.google.com/trends/explore?q=nwjs,electron%20js) - Electron wydaje się lepszym wyborem. – wildloop

Odpowiedz

61

Electron ma stronę wyjaśniającą różnice z węzłem-WebKit:

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

jak Node-Webkit, Electron zapewnia platformę do pisania na pulpicie aplikacji z JavaScript i HTML, i ma integrację Node na przyznać dostęp do systemu niskiego poziomu na stronach internetowych.

Ale są też zasadnicze różnice pomiędzy tymi dwoma projektami które sprawiają Electron całkowicie odrębny produkt z Node-Webkit:

1 - Wejście stosowania

W NW.js głównym punktem wejścia Aplikacja to strona internetowa lub skrypt JS . Użytkownik określa plik html lub js w pliku package.json i otwiera go w oknie przeglądarki jako główne okno aplikacji (w przypadku punktu wejścia html) lub skrypt jest wykonywany.

Podczas gdy w Electron, punktem wejścia jest skrypt JavaScript, zamiast , podając bezpośrednio adres URL, musisz ręcznie utworzyć okno przeglądarki i załadować plik HTML w odpowiednim interfejsie API. Musisz także przesłuchać zdarzenia w oknie, aby zdecydować, kiedy zamknąć aplikację.

Więc Electron działa bardziej jak runtime node.js, a API są bardziej niski poziom , można również użyć Electron dla celów testowania internetowych, takich jak phantomjs,

2 - system budowania

W celu Aby uniknąć złożoności budowania całego Chromium, Firma Electron korzysta z biblioteki libchromiumcontent, aby uzyskać dostęp do interfejsu API treści Chromium, . Biblioteka libchromiumcontent to pojedyncza, udostępniona biblioteka, która zawiera moduł zawartości chromu i wszystkie jego zależności. Użytkownicy nie potrzebują więc potężnej maszyny do budowy atom-shell.

3 - węzeł integracja

W Node-Webkit, integracja Węzeł na stronach internetowych wymaga łatania Chromium do pracy, podczas gdy w Electron wybraliśmy inną drogę do zintegrować pętlę libuv do wiadomości pętli każdej platformy, aby uniknąć hackowanie Chromium, zobacz kod node_bindings, jak to zrobić.

4 - Multi-context

Jeśli jesteś doświadczonym użytkownikiem Node-Webkit, należy zapoznać się z koncepcją kontekście Node i kontekstu internetowej, koncepcje te były wymyślona, ​​ponieważ, jak węzeł-Webkit został wdrożony.

Korzystając z funkcji wielokrotnego kontekstu węzła, Electron nie wprowadza nowego kontekstu JavaScript na stronach internetowych w postaci .

ochrona kod źródłowy

Electron jest pakowania swoje aplikacje z asar, który zawiera kod źródłowy niezabezpieczony aplikacjami. Dzięki temu aplikacja 1 może wyodrębnić aplikację 2 i wstrzyknąć podatne skrypty, bez wiedzy użytkownika. Możesz sprawdzić na przykład this project on GitHub to see an example of how to manipulate the Slack app. Na razie the Electron team don't have any plans to implement support for source code protection.

NW.js ma built in support for compiling your source code to protected binaries.

+1

Teraz nazwa sieci-węzła została zmieniona na NW –

+39

Może to być nieco stronnicze w stosunku do Electron, ponieważ ten artykuł pochodzi z repozytorium Electrona. – gbmhunter

+2

nw.js może uruchamiać aplikacje Chrome bezpośrednio po instalacji. Jest to cenne dla wielu programistów, których aplikacje w Chrome Web Store zostaną wkrótce osierocone. – marlar

Powiązane problemy